gpt4 book ai didi

javascript - 在useEffect中设置状态完成后如何调用函数?

转载 作者:行者123 更新时间:2023-12-04 08:07:08 25 4
gpt4 key购买 nike

我想运行 customFunction仅当 customEffect已完成设置isReady状态。和customFunction无论 isReady 是否应该只运行一次设置为 falsetrue只要它在设置后运行。

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 参数,但随后我的 customFunction 在 customEffect 完成之前运行,然后在设置 isReady 之后再次运行。
还尝试使用单独的 useEffect,但似乎仍然在 customEffect 完成之前运行。

最佳答案

将初始值设置为 null并使用单独的 useEffect正如 Kevin 建议的那样(仅不检查 isReady 真/假)。
在这种情况下 setIsReady将改变isReady从 null 到 true/false 和第二个 useEffect将被调用。

import customFunction from 'myFile';

export const smallComponent = () => {
const [isReady, setIsReady] = useState(null);

useEffect(() => {
const customEffect = async () => {
try {
const response = await get(
`some-api.com`,
);
return setIsReady(response);
} catch {
return null;
}
};

customEffect();
}, []);

useEffect(() => {
if (null === isReady) {
return;
}
customFunction();
}, [isReady]);

return (
<>Hello World</>
)
}

关于javascript - 在useEffect中设置状态完成后如何调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66168991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com