错误:超过最大更新深度。反应原生

Posted

技术标签:

【中文标题】错误:超过最大更新深度。反应原生【英文标题】:Error: Maximum update depth exceeded. React Native 【发布时间】:2021-09-06 18:56:19 【问题描述】:

我尝试在 compenetDidUpdate 中设置状态,但它显示错误无限循环。有什么解决办法吗?最初我将 setState 放在一个函数中,但也面临这个错误。我正在使用类组件代码

 componentDidUpdate()
          if(isEmpty(this.props.AESDetail) == false)
            if(this.props.AESDetail.length != 0)
              if(this.props.APIESDetail.length != 0)
                  if(this.props.APIESDetail.Focus != null)
                      this.setState(
                          gotFocusApies: true
                      )
                  
              
            
           
      

错误:超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制了嵌套更新的数量以防止无限循环。

【问题讨论】:

【参考方案1】:

看起来您可能只需要进行一项额外测试,以确保 gotFocusApies 还不是 true

这些 if 语句也可能更好地合并为一个。 注意:list.length != 0 通常可以替换为 list.length!!list.length

componentDidUpdate() 
  if (
    isEmpty(this.props.AESDetail) == false &&
    this.props.AESDetail.length &&
    this.props.APIESDetail.length &&
    this.props.APIESDetail.Focus != null &&
    !this.state.gotFocusApies
  ) 
    this.setState( gotFocusApies: true );
  

【讨论】:

以上是关于错误:超过最大更新深度。反应原生的主要内容,如果未能解决你的问题,请参考以下文章

ReactNative:超过最大更新深度错误

我从 React 得到一个错误:超过最大更新深度

尝试在反应组件的返回中使用 setstate 更新状态并获得“最大更新深度超出错误”?

React App登录错误:超过最大更新深度

加载页面时如何始终调用 onClick?错误:超过最大更新深度 [重复]

useEffect & map 超过了最大更新深度