我希望仅在
我尝试将isReady作为第二个useEffect参数添加,但是在customEffect完成之前我的customFunction被运行,然后在设置isReady之后再次运行。我还尝试了在另一个useEffect中使用它,但似乎仍然在customEffect完成之前运行。
customEffect
完成设置isReady
状态后才运行customFunction
。同时,只要customFunction
在设置后运行过一次,无论isReady
是否被设置为false
或true
,都应该只运行一次。import customFunction from 'myFile';
export const smallComponent = () => {
const [isReady, setIsReady] = useState(false);
useEffect(() => {
const customEffect = async () => {
try {
const response = await get(
`some-api.com`,
);
return setIsReady(response); // response can be true or false
} catch {
return null;
}
};
customEffect();
customFunction();
}, []);
return (
<>Hello World</>
)
}
我尝试将isReady作为第二个useEffect参数添加,但是在customEffect完成之前我的customFunction被运行,然后在设置isReady之后再次运行。我还尝试了在另一个useEffect中使用它,但似乎仍然在customEffect完成之前运行。
customEffect
中更新了isReady
值时,customFunction
是否依赖于它? - Drew ReesecustomFunction
中使用isReady
的值。但是看起来您和 p1uton 的解决方案似乎可以完成这项工作 :) - OFFLlNEcustomFunction
调用推入customEffect
调用中并不像想象的那么简单。我在下面更新了我的解决方案,并添加了一个保护条件,在customFunction
被调用后,防止它在组件重新渲染时再次被调用。 - Drew Reese