在互聯網連接狀態決議為 true 后,我正在嘗試在 useEffect 中運行多個函式。但一開始,狀態將為空,然后它會決議為真。因此,將不會呼叫其余函式。如何解決這個沖突?
我只想運行一次函式
const Component = () => {
const {isConnected} = useNetInfo();
useEffect(() => {
runFunctionOne();
runFunctionTwo();
}, []);
const runFunctionOne = () = {
if (!isConnected) return;
// rest
}
const runFunctionTwo = () = {
if (!isConnected) return;
// rest
}
}
uj5u.com熱心網友回復:
您可以嘗試將 isConnected 作為依賴項傳遞給 useEffect。因此,只要 isConnected 更改,useEffect 掛鉤就會重新運行。
uj5u.com熱心網友回復:
如果您希望效果只運行一次,您應該注意多個連接觸發器。否則,如果您在上線后斷開連接,則再次上線后將再次觸發效果。
const wasConnectedRef = useRef(false);
useEffect(() => {
if (isConnected && !wasConnectedRef.current) {
runFunctionOne();
runFunctionTwo();
wasConnectedRef.current = true;
}
}, [isConnected]);
uj5u.com熱心網友回復:
您可以使用 setTimeout 來確保您已連接:
useEffect(() => {
// functions will not be called until 6s have passed, hopefully you will be connected by then.
setTimeout(() => {
runFunctionOne();
runFunctionTwo();
}, 6000);
}, []);
如果你會嘗試連接多次,即使已經過了 6s,那么你需要添加 isConnected 作為依賴
}, [isConnected]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/526839.html
