错误:超出最大更新深度。反应本机

时间:2021-06-23 08:18:50

标签: react-native

我尝试在 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 个答案:

答案 0 :(得分:0)

看起来您可能只需要进行一项额外测试以确保 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 });
  }
}

如果我的回答解决了您的问题,请采纳。我真的很好奇,并且也很喜欢能够为答案投票的声誉。 ?