重置内部状态时使用什么代替componentWillReceiveProps

时间:2019-02-27 22:49:46

标签: javascript reactjs redux

我有一个组件,每次更换新道具时都需要重置状态错误。我当前的解决方案如下:

componentWillReceiveProps(nextProps) {
    if (nextProps.teamPoints !== this.props.teamPoints && nextProps.teamPoints) {
      if (this.state.formError) {
        this.setState({ formError: '' });
      }
    }
  }

仅在更改道具时重置formError(道具来自redux)。我已经搜索了一个更好的解决方案,但是还没有找到一个比这个更好的解决方案(因为componentDidUpdate会导致应用重新渲染)。

还有什么更好的选择?

1 个答案:

答案 0 :(得分:0)

从React blog

  

键更改后,React将创建一个新的组件实例,而不是更新当前实例。

因此,如果您的组件很简单并且formErrorstate的唯一组成部分,请为您的组件提供一个key道具。然后,当您想重置formError时,请更改key属性。这将导致创建该组件的新实例。