【发布时间】:2021-12-18 05:15:02
【问题描述】:
想象一下你有这种情况
useEffect(() => {
console.log('query changed');
setSomething(1)
getStuff();
}, [props.match.params.query])
const getStuff = async () => {
console.log(something)
}
我发现在这种情况下,某些东西将始终是以前的值。因此,例如,如果您更改道具并且某物为 2,它将调用 setSomething(1),并将其放入队列中。但是,当您进入 getStuff 时,仍然是 2。如何使 setState 函数始终在调用下一个函数之前应用?
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/30782948/…
-
我知道状态回调,但是没有外部依赖的钩子不支持这些回调。我的印象是,如果你想找到 useEffect 之外的值,它会被更新,但显然那不是真的。
-
您需要一个单独的 useEffect 挂钩来调用
getStuff(),只要您的状态发生变化,就会运行该挂钩。然后getStuff()将具有更新的状态。
标签: reactjs asynchronous react-hooks