如何使用getDerivedStateFromProps

时间:2019-01-30 18:37:02

标签: reactjs

在我的应用程序中,如果用户从登录屏幕登录,我想导航到仪表板屏幕。我的代码就是这样。

// Login Screen

     componentDidUpdate() {
          const { auth, history } = this.props;
          redirectIfAuthenticated(auth.isAuthenticated, history, './dashboard');
       }

       static getDerivedStateFromProps = (nextProps, prevState) => {
          if (nextProps.errors) 
             return { errors: nextProps.errors }

          return { errors: prevState.errors }
       }


// auth util
export const redirectIfAuthenticated = (isAuthenticated, history, screen) => {
   if (isAuthenticated) { 
      history.push(screen);
   }
}

这按预期工作。我想知道即时通讯是否以正确的方式进行。我用getDerivedStateFromProps替换了componentWillRecieveProps。现在,我还必须使用componentDidUpdate来实现与componentWillRecieveProps相同的功能。这是正确的

1 个答案:

答案 0 :(得分:2)

是的,这是你应该怎么做。看看getDerivedStateFromProps's documentation

此外,您可以返回null以避免更新状态,因此我将pr​​evState.errors部分更改为this:

 static getDerivedStateFromProps = (nextProps, prevState) => {
          if (nextProps.errors) {
             return { errors: nextProps.errors }
          } else {
           return null
          }
       }