React開發(fā)過程中踩過的一些坑

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)求了如下圖

一路手動(dòng)點(diǎn)擊跳轉(zhuǎn)ok,刷新就gg

找了很多資料,有說修改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),解決

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容