UseEffect 死迴圈問題記錄

2021-10-10 20:35:41 字數 743 閱讀 6574

問題**如下:

export

default props =>

}= props.data;

const

[info, setinfo]

=usestate()

;useeffrct((

)=>);

},[option]

)}

當props.data 的值中沒有 option 的時候,就死迴圈了, 報錯如下:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-olv7zpdb-1606299982412)(en-resource://database/544:1)]

雖然後面發現這個問題是因為很蠢的**造成的,但還是要記錄一下!!!警示自己

每次state更新,頁面就會重新渲染。

由於在 useeffect 中使用了setstate,執行useeffect 就會重新渲染。

獲取detail 和 option 的值沒有依賴,所以頁面渲染就會重新取值。

由於給option值賦了預設值,每次重新取值就會重新賦值乙個空物件

空物件 {} !== {}

useeffect 依賴於 option, option 更新就會重新執行useeffect中的**

所以每次頁面重新渲染,option的值就會變化,導致 再次執行useeffect中的**,然後再次重新渲染,進入死迴圈。

option不設定預設值,在使用時進行為空判斷

vfork死迴圈問題

關於vfork函式的乙個問題。include include include include int main else return 0 首先說一下fork和vfork的差別 這兩個的差別是,乙個是copy,乙個是share。你 man vfork 一下,你可以看到,vfork是這樣的工作的,1 ...

HashMap死迴圈問題追蹤

hashmap在設計之初並沒有考慮多執行緒併發的情況,多執行緒併發的情況下理論上應該使用concurrenthashmap,但是程式中經常會無意中在多併發的情況下使用了hashmap,如果是jdk1.8以下的版本,有可能會導致死迴圈,打滿cpu占用,下面基於jdk1.7原始碼分析下原因。我們從put...

shell 死迴圈if判斷 shell 死迴圈

例1 執行指令碼後會自動載入firefox瀏覽器,並開啟指定網頁。如果使用者關閉firefox,指令碼會再次自動重新開啟firefox。如需結束迴圈,中止t2.sh程序即可。注意不要同時執行兩個t1.sh指令碼,否則 若事先不知道指令碼名,也可以通過類似於 pstree grep firefox 的...