1.項(xiàng)目中多個(gè)自定義多個(gè)component時(shí),通常都有相應(yīng)的.js和.css文件信卡,由于webpack打包后所有css樣式都放在一個(gè)文件比如說(shuō)bundle.js,因此要特別注意css樣式?jīng)_突導(dǎo)致界面顯示失控傍菇,比方在模塊A的css文件寫(xiě)了類選擇器.logo并設(shè)置了樣式,然后在B模塊又同樣寫(xiě)了.logo牵触,會(huì)導(dǎo)致樣式層疊從而相互影響,復(fù)制拷貝樣式時(shí)要尤其注意選擇器影響問(wèn)題
2.react-router-dom袜腥,一級(jí)路由或者經(jīng)過(guò)手動(dòng)點(diǎn)擊跳轉(zhuǎn)都沒(méi)問(wèn)題,但是多級(jí)路由路徑在瀏覽器刷新后得到404瞧挤,仔細(xì)一看路由地址變成網(wǎng)絡(luò)restful請(qǐng)求了如下圖
找了很多資料,有說(shuō)修改BrowserRouter為HashRouter癌刽,但是尼瑪沒(méi)啥用尝丐,又檢查webpack配置文件devServer里historyApiFallback設(shè)置也ok的,之后修改index.html里bundle.js的引入路徑远荠,./bundle.js和/bundle.js都試過(guò),都不起作用呀譬淳,仔細(xì)分析bundle.js是webpack打包后放到output設(shè)置的文件夾里盹兢,會(huì)不會(huì)是這里路徑出了問(wèn)題,再次查看webpack配置文件绎秒,output選項(xiàng)
里面,publicPath并沒(méi)有設(shè)置剂娄,只設(shè)置了path玄呛,仔細(xì)一看兩者區(qū)別:
path:是所有輸出文件的目標(biāo)路徑,打包后文件在硬盤(pán)中的存儲(chǔ)位置把鉴,僅僅告訴Webpack結(jié)果存儲(chǔ)在哪里儿咱;
publicPath:輸出解析文件的目錄混埠,指定資源文件引用的目錄 ,打包后瀏覽器訪問(wèn)服務(wù)時(shí)的 url 路徑中通用的一部分钳宪,被許多Webpack的插件用于在生產(chǎn)模式下更新內(nèi)嵌到css扳炬、html文件里的url值
解決辦法:設(shè)置publicPath為: '/'
3.react, 給組件的鉤子函數(shù)componentDidMount添加事件監(jiān)聽(tīng)addEventListener,在卸載組件鉤子里componentWillUnmount進(jìn)行removeEventListener恨樟,發(fā)現(xiàn)removeEventListener不起作用,查資料發(fā)現(xiàn)相同事件綁定和解除缩多,需要使用共用函數(shù)养晋,共用函數(shù)不能帶參數(shù)而我這里用了f.bind(this),果斷去掉后面的bind(this),又發(fā)現(xiàn)沒(méi)了this后代碼達(dá)不到預(yù)期效果绳泉,最后在組件構(gòu)造方法里加上this.f=this.f.bind(this),解決