getDerivedStateFromProps无法按预期工作

时间:2019-01-30 10:57:27

标签: reactjs

我重构了我的React应用程序,并用getDerivedstateFromProps替换了componentWillRecieveProps。

然后它给出一个错误,提示Cannot read property 'setState' of undefined

这是我的代码

static getDerivedStateFromProps = nextProps => {
      const { auth, history } = nextProps;
      redirectIfAuthenticated(auth.isAuthenticated, history, './dashboard');

      if (nextProps.errors) {
         this.setState({ 
            errors: nextProps.errors 
         });
      }
   }

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

getDerivedStateFromProps不仅是componentWillReceiveProps的重命名,而且具有不同的用途和语法。它是静态的,因此无法访问该类实例

还应该getDerivedStateFromProps仅更新状态,而没有任何副作用。所有副作用都必须在componentDidUpdate中

static getDerivedStateFromProps(props, state) {

  if (props.errors !== state.prevErrors) {
    return { 
        errors: props.errors,
        prevErrors: props.errors
     }
  }
  return { prevErrors: props.errors}
}

render() {
    const { auth, history } = props;
    if(this.props.auth.isAuthenticated) {
        return <Redirect to={'/dashboard'} />
    };
    // extra logic here
}