useReducer - 如何判断状态何时更新
useReducer - how to tell when state has been updated
使用useReducer管理状态时,内部状态更新被延迟。
即如果我要用
之类的东西初始化减速器
const [state, dispatch] = useReducer(reducer, {prop: ""})
...然后像这样调用调度...
dispatch({
type: 'ACTION_THAT_UPDATES_PROP'
});
console.log(state.prop)
...由于延迟状态更新,"state.prop" 的值将不包含新值。
有没有办法获取最新更新的状态?换句话说,我正在寻找 React 的 setState 方法提供的类似机制,您可以在其中执行类似
this.setState({
propName: "newPropValue"
}, () => {
// state.propName would have value of "newPropValue" here
})
您可以访问它,但不能在函数体中访问,也不能在调度后直接访问,因为需要先更新状态。 React 的状态和生命周期要求新状态在当前状态的上下文中不可接近。
这样做的方法是使用useEffect
:
React.useEffect(() => {
console.log(state.prop)
}, [state.prop]);
使用useReducer管理状态时,内部状态更新被延迟。
即如果我要用
之类的东西初始化减速器const [state, dispatch] = useReducer(reducer, {prop: ""})
...然后像这样调用调度...
dispatch({
type: 'ACTION_THAT_UPDATES_PROP'
});
console.log(state.prop)
...由于延迟状态更新,"state.prop" 的值将不包含新值。
有没有办法获取最新更新的状态?换句话说,我正在寻找 React 的 setState 方法提供的类似机制,您可以在其中执行类似
this.setState({
propName: "newPropValue"
}, () => {
// state.propName would have value of "newPropValue" here
})
您可以访问它,但不能在函数体中访问,也不能在调度后直接访问,因为需要先更新状态。 React 的状态和生命周期要求新状态在当前状态的上下文中不可接近。
这样做的方法是使用useEffect
:
React.useEffect(() => {
console.log(state.prop)
}, [state.prop]);