問題一:
問題描述:
我們公司自己的react項目,先打包部署v1.1版本,一切正常。
v1.2版本做了很多頁面和功能的修改和新增,但是打包部署之后,發現有些界面還是保持了v1.1的狀態,比如有些新增按鈕沒有顯示出來等等。需要手動清空瀏覽器緩存之后才會更新成新頁面。
原因:
瀏覽器在訪問相同的url的時候,會根據一些頭信息來判斷是否重新渲染和向服務器請求資源,也就是說,如果url是相同的,瀏覽器就有可能偷懶直接從緩存里面加載了舊的資源。
解決:
在頁面url后面加hash,可以是時間戳或者隨機數,這樣每次url都不同,瀏覽器就不會偷懶了,每次都向服務器取最新的資源,也就解決了react的大坑---瀏覽器緩存問題。
轉載自:https://blog.csdn.net/github_36085116/article/details/56286186
問題2
復雜的react組件 setState不更新 - 使用函數作為setState的第一個參數
寫了一個很復雜的stateful組件,
結果在某一個功能上,
觸發函數它卻不更新視圖了,
難以排查,
…
問題的關鍵在這行代碼
this.setState({ value: doSomething(this.state.value) })
千萬不要在this.setState中使用this.state.xxx取值,
如果要使用this.state中的值,
使用函數作為第一個參數:
this.setState((prevState)=>({ value: doSomething(prevState.value) })
轉載自:https://blog.csdn.net/sinat_24070543/article/details/80666676