如何创建具有状态更新的事件(通过 getDerivedStateFromProps)

How to create an event with state update (by getDerivedStateFromProps)

我正在尝试将 componentWillReceiveProps 方法更改为静态 getDerivedStateFromProps 并且不知道如何在 getDerivedStateFromProps 函数中使用关键字 this。

最初,我想在 getDerivedStateFromProps 中使用 this.props.history.push(),但不知道如何使用。
然后我尝试 returning 状态(正如 getDerivedStateFromProps 应该做的那样)并且无法用它创建事件。简单看一下代码将使我的问题更容易理解。

 static getDerivedStateFromProps(nextProps, prevState){
   if(nextProps.passwordResetResult.message==="Password reset 
      Successfully")
    {
      alert("Password reset successfully please login again");
         this.props.history.push('/home')
    }
   }

我知道我应该 return 最后声明;但我没有发现它对我的目的有用,因为我不明白如何创建一个事件,该事件将在 return 之后状态更改时触发,然后触发 this.props.history.push().

以上代码导致错误

this.props is undefined.

我知道我不能在 getDerivedStateFromProps 中使用 this 关键字;我的假设是否正确?

getDerviedStateFromProps 是一个静态函数,所以你不能从它访问 this,静态函数绑定到 class 本身而不是组件的实例。我相信它故意这样做是为了避免副作用。

所以不要使用 this.history.push 你应该使用你在生命周期钩子参数中得到的 nextProps.history.push

但是至于你的 use-case 因为你说你真的不需要 return 状态,这意味着你并不真的需要派生状态,因为你不改变基于内部状态在特定的道具上。您应该使用 componentDidUpdate 而不是 side-effects,请参阅 https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops