javascript - 超出最大更新深度。当组件重复调用 setState 时可能会发生这种情况

标签 javascript arrays reactjs ecmascript-6 es6-promise

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

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.

函数声明

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>

最佳答案

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

您想要为 onClick 提供一个应在单击事件发生时调用的函数。

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

关于javascript - 超出最大更新深度。当组件重复调用 setState 时可能会发生这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284751/

相关文章:

javascript - 自定义光标悬停状态

javascript - JS将列表项颜色与所选项目匹配

javascript - 如何避免在 promise 回调中包装代码?

php - 如何在 codeigniter 中单击按钮后删除一些 session 数组段

ios - 如何快速创建 3D 数组/矩阵?

javascript - 从 Google 日历 API 事件(React、Javascript)获取 "Recurrence"

javascript - d3.js 中的 3 个数组 - 如何调用其他数组?

javascript - 使用 jsonpath 查询获取父对象

c - 通过 N 个输入查找 C 中最大的数字

javascript - 在 React HOC 中渲染数组中的对象