亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 React 中使用效果函數說要導入,而它最終工作正常

在 React 中使用效果函數說要導入,而它最終工作正常

慕少森 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]);

查看完整回答
反對 回復 2023-10-14
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

這是由于缺少依賴項造成的。

每個渲染都會調用 useEffect 方法,第二個參數為空。但是,如果您需要useEffect函數僅在某些內容發生更改時執行,我們需要將該變量或對象添加到依賴項數組中。

在使用 Effect 時,您使用了函數范圍之外的外部對象,例如 alldoc 和 Gettestimon。

如果您只想對這些對象更改alldocGettestimo執行useEffect,則需要將其添加到依賴項數組中。否則,您將在每個渲染周期執行useEffect 。


查看完整回答
反對 回復 2023-10-14
  • 2 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號