如何解决“超出最大更新深度。在componentWillUpdate或componentDidUpdate内部调用setState。”反应错误?

时间:2019-10-25 16:11:15

标签: javascript reactjs firebase debugging npm

代码运行正常,但这无处不在。

我尝试将条件切换为componentDidMount,但这也不起作用。得到此功能的错误。

  componentDidUpdate() {
    if (
      this.props.firebase.auth.currentUser &&
      this.props.firebase.auth.currentUser.userProfile &&
      !this.state.userProfile
    ) {
      this.setState(
        {
          userProfile: this.props.firebase.auth.currentUser.userProfile
            .userProfile
        }
      );
    }
  }

应该将用户重定向到nextPage,但出现“超出最大更新深度”错误。

2 个答案:

答案 0 :(得分:0)

为什么有.userProfile.userProfile?您可能会使用未定义的userProfile更新,因此!this.state.userProfile检查失败。

我将删除第二个.userProfile。

答案 1 :(得分:0)

您没有将prevProps传递给componentDidUpdate,然后在条件中使用它。如果没有有关您为什么使用userProfile的更多信息,我建议您执行以下操作:

componentDidUpdate(prevProps){
   if(this.props.firebase.auth.currentUser === this.prevProps.firebase.auth.currentUser) {
   ///your code
}}

您对this.props.firebase.auth.currentUser.userProfile && !this.state.userProfile的逻辑似乎不应该放在此方法中,因为如果您比较currentUser是否仍然存在并且在组件更新后相同,这似乎是多余的。 / p>