javascript - react : Component setState called repeatedly

标签 javascript reactjs

当我运行 react 代码时出现此错误。

这里的代码基于 tutorial由 React.org 提供

我是 react 新手,所以我发现调试代码并不容易。

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.

这是由handleClick方法引起的

错误:

handleClick
c:/dev/tic-tac-toe/src/index.js:38

  35 |  handleClick(i) {
  36 |    const squares = this.state.squares.slice();
  37 |    squares[i] = 'X';
> 38 |    this.setState({squares});
     | ^  39 |  }
  40 | 
  41 |  renderSquare(i) {

renderSquare
c:/dev/tic-tac-toe/src/index.js:45

  42 |   return (
  43 |     <Square 
  44 |       value={this.state.squares[i]}
> 45 |       onClick={this.handleClick(i)} 
     | ^  46 |     />
  47 |   );
  48 | }


最佳答案

这是因为您正在设置事件处理程序并同时调用它。 你可能会这样做:

return (
  43 |     <Square 
  44 |       value={this.state.squares[i]}
> 45 |       onClick={this.handleClick.bind(this, i)} 
     | ^  46 |     />
  47 |   );

关于javascript - react : Component setState called repeatedly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490859/

相关文章:

javascript - 如何在一个函数中调用 debounce 方法?

javascript 设置超时错误

javascript - 是否可以在 PHP 中模仿 Javascript 闭包?

javascript - 从网站下载 PDF 时会损坏

javascript - 有没有更好(更干净)的方法来使用三元运算符编写此 JS 代码(无需重复代码)?

javascript - React - 如何导出纯无状态组件

css - 如何在 React Formik 应用程序中设置由 Yup 验证的错误消息的样式?

javascript - 如何在React中识别material-ui slider ?

javascript - 无法连接 MySQL DB,出现 ECONNREFUSED

javascript - Tablesorter 过滤器函数扭曲表结果