使用useReducer管理状态时,将延迟内部状态更新。
即如果我要用类似
的东西初始化一个reducerconst [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
})
答案 0 :(得分:1)
您可以访问它,但不能在函数主体中访问,也不能在分派之后直接访问,因为状态需要首先更新。 React的状态和生命周期要求新状态在当前状态的上下文中不可接近。
方法是使用useEffect
:
React.useEffect(() => {
console.log(state.prop)
}, [state.prop]);