我正在開發一個 React JS 網站來協助 TFserving
在我的檔案 home.js 中有以下行中的錯誤
useEffect(() => {
if (!preview) {
return;
}
setIsloading(true);
sendFile();
}, [preview]);
錯誤資訊:-
React Hook useEffect has a missing dependency: 'sendFile'. Either include it or remove the dependency array.
uj5u.com熱心網友回復:
它向您顯示警告,因為您正在使用sendFile()方法并且您沒有將其添加到dependency array. 所以你有兩個選擇。
1.) 將其添加到dependency array
useEffect(() => {
if (!preview) {
return;
}
setIsloading(true);
sendFile();
}, [preview, sendFile]);
2.)使用eslint-disable-next-line通過使用它,它不會再顯示警告了。
useEffect(() => {
if (!preview) {
return;
}
setIsloading(true);
sendFile();
//eslint-disable-next-line
}, [preview]);
uj5u.com熱心網友回復:
如果您希望效果僅在預覽更改時運行,那么將預覽指定為依賴陣列在技術上是正確的。但是,React-hooks linting 規則無法區分這種情況。您可以使用以下命令專門為該行禁用規則:
// eslint-disable-next-line react-hooks/exhaustive-deps
但更好的是使用 useCallback:
const sendFile= useCallback(() => {
}, [])
在這里,如果您的函式中有依賴項,則必須將它們包含在 useCallback 依賴項陣列中,如果函式引數發生更改,這將再次觸發 useEffect。
uj5u.com熱心網友回復:
useEffect(() => {
if (!preview) {
return;
}
setIsloading(true);
sendFile();
}, `[preview, setIsloading, sendFile]`);
您忘記包含 useEffect 鉤子中使用的函式必須在依賴陣列中,因為它們是從鉤子外部使用的。setState 函式不會隨時間改變參考,因此它不會改變 useEffect 鉤子的行為
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448604.html
標籤:javascript 反应 网络
上一篇:呼叫findAllById時,JPA存盤庫未獲取新資料以前的資料僅存在于參考的變數中
下一篇:如何將兩張卡片放在一起?
