【问题标题】:Maximum update depth exceeded. This can happen when a component repeatedly calls setState [duplicate]超过最大更新深度。当组件重复调用 setState [重复] 时,可能会发生这种情况
【发布时间】:2019-08-12 13:30:38
【问题描述】:

我想调用一个方法,但同时它给了我一个错误:

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

函数声明

datahandler= (val1,val2) => {
    this.setState(
      {
        dataNew:
          this.state.dataNew=== {val1} ? {val2} : {val1}
      },
      () => {
        this.getNew();
      }
    );
  };

函数调用

<Table.HeaderCell onClick={this.datahandler('name asc','name desc')}>
  Click Me to Call
</Table.Headercell>

【问题讨论】:

    标签: javascript arrays reactjs ecmascript-6 es6-promise


    【解决方案1】:

    您在渲染时直接调用this.sortHandler,这将导致setState 被调用,进而导致新的渲染,无限循环继续。

    你想给onClick 一个函数,当点击事件发生时应该调用它。

    <Table.HeaderCell
      onClick={() => this.sortHandler("companyName asc", "companyName desc")}
    >
      Click Me to Call
    </Table.HeaderCell>
    

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2018-09-13
      • 2019-07-25
      • 1970-01-01
      • 2020-10-22
      • 2021-04-29
      • 2023-04-09
      • 2021-05-13
      • 2023-03-26
      相关资源
      最近更新 更多