useReducer-如何判断状态已更新

时间:2019-09-05 22:11:45

标签: reactjs react-hooks reducers

使用useReducer管理状态时,将延迟内部状态更新。

即如果我要用类似

的东西初始化一个reducer
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
})

1 个答案:

答案 0 :(得分:1)

您可以访问它,但不能在函数主体中访问,也不能在分派之后直接访问,因为状态需要首先更新。 React的状态和生命周期要求新状态在当前状态的上下文中不可接近。

方法是使用useEffect

 React.useEffect(() => {
    console.log(state.prop)
  }, [state.prop]);