慕少森
2023-10-14 16:51:33
GitHub 中突出顯示的代碼useEffect(() => {? async function getTok() {? ? await Gettestimon();? ? alldoc.map(forget => console.log(forget.name));? ? setcondi(true);? ? // eslint-disable-next-line react-hooks/exhaustive-deps? }? getTok();}, []);每當我編譯突出顯示的代碼時,它都會說我的函數gettestimon代表獲取推薦,而不是其他東西,未在效果中導入,但最終它仍然可以工作。我想知道如何解決這個問題,但我在某處讀到并補充道:// eslint-disable-next-line react-hooks/exhaustive-deps我怎樣才能解決這個問題?確切的錯誤是:React Hook useEffect has a missing dependency: 'Gettestimon'. Either include it or remove the dependency array.eslintreact-hooks/exhaustive-deps
2 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
如果您在內部使用外部函數/變量React.useEffect,則還需要將它們添加到其依賴項數組中。這樣,React 才會知道React.useEffect僅當依賴項數組中指定的值發生更改時才運行。另外,您不需要使用 eslint 注釋。
雖然它在不將其添加到依賴項數組的情況下仍然可以工作,但由于過多不必要的重新渲染,它會降低組件的性能。
你可以將其改進為這樣的
useEffect(() => {
? async function getTok() {
? ? await Gettestimon();
? ? alldoc.map(forget => console.log(forget.name));
? ? setcondi(true);
? }
? getTok();
}, [Gettestimon]);

呼如林
TA貢獻1798條經驗 獲得超3個贊
這是由于缺少依賴項造成的。
每個渲染都會調用 useEffect 方法,第二個參數為空。但是,如果您需要useEffect函數僅在某些內容發生更改時執行,我們需要將該變量或對象添加到依賴項數組中。
在使用 Effect 時,您使用了函數范圍之外的外部對象,例如 alldoc 和 Gettestimon。
如果您只想對這些對象更改alldoc和Gettestimo執行useEffect,則需要將其添加到依賴項數組中。否則,您將在每個渲染周期執行useEffect 。
添加回答
舉報
0/150
提交
取消