getDerivedStateFromProps

getDerivedStateFromProps

由于react已弃用了许多Lifecycle Methods,因此我发现,当使用reduxconnect时,当我想扩展component的局部状态时,我正在使用componentDidUpdate。问题是只有prevProps, prevState传递给此函数。

那意味着我在nextProps, nextState lifeCycle`中只有shouldComponentUpdate

对我来说,执行以下操作本质上是错误的:

  shouldComponentUpdate(nextProps) {
    const { status_status } = nextProps;
    if(status_status === "error") {
      this.props.dispatch(resetStatus());
    }
    return true;
  }


这肯定是antiPattern,我不应该这样做。

然后如何在不使用nextProps的情况下获取shouldComponentUpdate

最佳答案

我有类似的情况,我发现getDerivedStateFromProps在这种情况下有用且合适。

static getDerivedStateFromProps(props, state) {
  // now, you may dispatch checking the condition
  // BTW, you will dispatch just using props
  // props.dispatch()
  // this.props.dispatch() // invalid
}


我从docs知道此注释:


  如果您需要根据道具的更改执行副作用(例如,数据获取或动画),请改用componentDidUpdate生命周期。


但是我只是分享我的经验,只有在getDerivedStateFromProps起作用的情况下。

但是,我也建议您先使用componentDidUpdate挂钩。如果一切对您都有利,那就坚持下去。或者,如果您也使用componentDidUpdate面对并且使用getDerivedStateFromProps感觉还不错,那么您可以发表自己的意见和想法作为答案。

09-25 10:39