1.項(xiàng)目中多個(gè)自定義多個(gè)component時(shí),通常都有相應(yīng)的.js和.css文件,由于webpack打包后所有css樣式都放在一個(gè)文件比如說bundle.js,因此要特別注意css樣式?jīng)_突導(dǎo)致界面顯示失控,比方在模塊A的css文件寫了類選擇器.logo并設(shè)置了樣式,然后在B模塊又同樣寫了.logo,會(huì)導(dǎo)致樣式層疊從而相互影響,復(fù)制拷貝樣式時(shí)要尤其注意選擇器影響問題
2.react-router-dom,一級(jí)路由或者經(jīng)過手動(dòng)點(diǎn)擊跳轉(zhuǎn)都沒問題,但是多級(jí)路由路徑在瀏覽器刷新后得到404,仔細(xì)一看路由地址變成網(wǎng)絡(luò)restful請(qǐng)求了如下圖

找了很多資料,有說修改BrowserRouter為HashRouter,但是尼瑪沒啥用,又檢查webpack配置文件devServer里historyApiFallback設(shè)置也ok的,之后修改index.html里bundle.js的引入路徑,./bundle.js和/bundle.js都試過,都不起作用呀,仔細(xì)分析bundle.js是webpack打包后放到output設(shè)置的文件夾里,會(huì)不會(huì)是這里路徑出了問題,再次查看webpack配置文件,output選項(xiàng)
里面,publicPath并沒有設(shè)置,只設(shè)置了path,仔細(xì)一看兩者區(qū)別:
path:是所有輸出文件的目標(biāo)路徑,打包后文件在硬盤中的存儲(chǔ)位置,僅僅告訴Webpack結(jié)果存儲(chǔ)在哪里;
publicPath:輸出解析文件的目錄,指定資源文件引用的目錄 ,打包后瀏覽器訪問服務(wù)時(shí)的 url 路徑中通用的一部分,被許多Webpack的插件用于在生產(chǎn)模式下更新內(nèi)嵌到css、html文件里的url值
解決辦法:設(shè)置publicPath為: '/'
3.react, 給組件的鉤子函數(shù)componentDidMount添加事件監(jiān)聽addEventListener,在卸載組件鉤子里componentWillUnmount進(jìn)行removeEventListener,發(fā)現(xiàn)removeEventListener不起作用,查資料發(fā)現(xiàn)相同事件綁定和解除,需要使用共用函數(shù),共用函數(shù)不能帶參數(shù)而我這里用了f.bind(this),果斷去掉后面的bind(this),又發(fā)現(xiàn)沒了this后代碼達(dá)不到預(yù)期效果,最后在組件構(gòu)造方法里加上this.f=this.f.bind(this),解決