Javascript React调用循环中的函数

Javascript React调用循环中的函数,javascript,reactjs,Javascript,Reactjs,我试图理解为什么这会导致循环: 但这并不是: 我的问题是从另一个函数调用一个函数,这个函数也会产生一个循环,为什么 anyfunction(){ 另一个函数(); } 另一个函数(){ 如果(this.state.something>1){ this.setState(PrevState=>{ PrevState.something=PrevState.something-1 返回{something=PrevState.something}; }); this.anyfunction(

我试图理解为什么这会导致循环:


但这并不是:


我的问题是从另一个函数调用一个函数,这个函数也会产生一个循环,为什么

anyfunction(){
另一个函数();
}
另一个函数(){
如果(this.state.something>1){
this.setState(PrevState=>{
PrevState.something=PrevState.something-1
返回{something=PrevState.something};
});
this.anyfunction()
}
}
为什么if没有中断循环?

原因是什么

<button onClick={this.moveRight()}>

循环中的结果是让括号调用函数,而不是将onClick设置为函数引用

第二个问题也会导致循环,因为如果
this.state.something>1
的计算结果永远不会为false,则函数的两个函数都会互相调用。

原因是什么

<button onClick={this.moveRight()}>

循环中的结果是让括号调用函数,而不是将onClick设置为函数引用

第二个问题也会导致循环,因为如果
this.state.something>1
的计算结果永远不会为false,那么函数都会互相调用。

如果
this.moveRight()
调用自身,那么除非您设置停止递归的条件,否则它将继续这样做。此外,这还告诉您如何正确分配事件处理程序

我的问题是从另一个函数调用一个函数。这也导致了一个循环,为什么

this.setState
是异步的,因此如果要在调用
this.anyfunction()
之前设置
this.state.something
的值,则需要执行以下操作:

function anotherfunction() {
  if (this.state.something > 1) {
    this.setState(
      PrevState => {
        return { something: PrevState.something - 1 };
      },
      () => {
        this.anyfunction();
      }
    );
  }
}
也就是说,一旦完成了我要求的状态更改,就调用this.anyFunction。更多信息。

如果
this.moveRight()
调用自身,那么除非您设置停止递归的条件,否则它将继续这样做。此外,这还告诉您如何正确分配事件处理程序

我的问题是从另一个函数调用一个函数。这也导致了一个循环,为什么

this.setState
是异步的,因此如果要在调用
this.anyfunction()
之前设置
this.state.something
的值,则需要执行以下操作:

function anotherfunction() {
  if (this.state.something > 1) {
    this.setState(
      PrevState => {
        return { something: PrevState.something - 1 };
      },
      () => {
        this.anyfunction();
      }
    );
  }
}

也就是说,一旦完成了我要求的状态更改,就调用this.anyFunction。更多信息。

如果if为false,我使用调试器进行了检查。它忽略if并保持循环。因此,放置parethesis意味着“调用此函数”,而不是像java这样的空参数?如果if变为false,我使用调试器检查。它忽略if并保持循环。所以,放置parethesis意味着“调用这个函数”,而不是像java那样的空参数?为什么我在尝试像u一样使用arrow函数时会出现这个错误?ESLint:预期是赋值或函数调用,但看到的是表达式。(没有未使用的表达式)。我应该如何调用函数以使其仅运行一次并避免循环?或者我怎样才能停止这个循环?@andriole我不知道错误的背景,所以我无法回答。如果只想调用它一次,那么为什么还要在内部再次调用它?我想调用它三次,但这个.anyfunction()调用了十亿次。我应该写些什么来调用它一次?为什么我在尝试像u一样执行箭头函数时会出现这个错误?ESLint:预期是赋值或函数调用,但看到的是表达式。(没有未使用的表达式)。我应该如何调用函数以使其仅运行一次并避免循环?或者我怎样才能停止这个循环?@andriole我不知道错误的背景,所以我无法回答。如果只想调用它一次,那么为什么还要在内部再次调用它?我想调用它三次,但这个.anyfunction()调用了十亿次。我应该写什么来称呼它呢?