【问题标题】:Get an error when passing parameters to a function将参数传递给函数时出错
【发布时间】:2021-04-18 05:47:35
【问题描述】:

我正在尝试使用我的参数向函数 onGridRowsUpdated 发送请求,但它向我抛出了错误

Error: 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.

我想知道是什么问题,因为我正确调用了参数。

  onGridRowsUpdated = ({ fromRow, toRow, updated }) => {
    this.setState(state => {
      const rows = state.rows.slice();
      for (let i = fromRow; i <= toRow; i++) {
        console.log(fromRow, toRow, updated)
        rows[i] = { ...rows[i], ...updated };
      }
      this.definedColumn();
      return { rows };
    });
  };

render() {
    this.onGridRowsUpdated(1, 1, {D: '26'});
}

【问题讨论】:

    标签: reactjs react-data-grid


    【解决方案1】:

    您应该知道,只要组件状态发生变化,就会发生重新渲染。

    正如我在您的代码中看到的,您正在调用一个函数来呈现一些表格,并且在其中,您正在调用 setState() 方法,该方法本质上是异步的。这就是重新渲染发生并导致超过最大更新深度

    的原因

    渲染应该始终保持纯净。这是一个非常糟糕的做法 那里有副作用,调用 setState 是一个很大的危险信号;

    更多参考请查看 - setState() method

    在渲染内部调用 setState() - Calling setState() in React from render method

    【讨论】:

    • 我可以做些什么来避免这个陷阱,同时更新我的​​功能?
    • @tutobello 我不知道你想做什么,但建议你从任何点击函数或 componentDidMount() 调用 setState() 东西以避免这种情况。
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多