This question already has an answer here:
React: onClick handler is getting called on every render?
                                
                                    (1个答案)
                                
                        
                去年关闭。
            
        

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


  超过最大更新深度。当组件重复调用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>

最佳答案

您直接在渲染上调用this.sortHandler,这将导致调用setState,这反过来又导致新的渲染,并且不确定循环继续。

您想给onClick一个函数,该函数应在发生click事件时调用。

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

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

10-11 22:36
查看更多