Why I receive this error using componentWillReceiveProps?

℡╲_俬逩灬. 提交于 2019-12-08 08:59:13

问题


Receive error: × Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.

Tried to delete part with error and setState (because it looks like the reason of infinite loop). Didn't help

componentWillReceiveProps(nextProps){
    if(nextProps.auth.isAuthenticated){
        this.props.history.push('/dashboard')
    }
    // if(nextProps.errors){
    //     this.setState({
    //         errors: nextProps.errors
    //     })
    //     console.log('Error');
    // }
};

回答1:


history.push causes a rerender, it calls componentWillReceiveProps and everything goes in a loop.

Use this code instead:

componentDidUpdate(prevProps) {
  if (
      this.props.auth.isAuthenticated
      && this.props.auth.isAuthenticated !== prevProps.auth.isAuthenticated
  ) {
    this.props.history.push('/dashboard')
  }
}

This can still cause a loop if you have a similar mistake somewhere else.



来源:https://stackoverflow.com/questions/55344068/why-i-receive-this-error-using-componentwillreceiveprops

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!