如何等待useReducer调度来更新状态



如何等待调度更新状态?我没有在useReducer API文档中找到任何内容,也没有在TypeScript类型定义中找到任何指示。

以下是我尝试过但没有成功的:

await new Promise<void>((resolve) => {
dispatch({ type: DO_SOMETHING, something });
resolve();
});
console.log(state.something); // still the old version

如何等待调度更新状态?

你不能。

在任何特定的渲染中,组件的状态和道具都不会改变,它们在该渲染中是恒定的。组件必须重新渲染才能看到新的道具和状态值。

在您的情况下,只有在reducer函数更新了组件的状态并重新渲染组件之后,才能访问更新的状态。

您需要自己创建的等待状态

例如

dispatch(doSomethingAction())
const doSomeThingAction = () => {
dispatch({type: 'LOADING'})
// do something 
.
.
.
.
// something has done
dspatch({ type: SUCCESS, something });
}

最新更新