我遇到了一个非常奇怪的问题,我不知道该如何解决。

我有一个相当简单的方法:按下按钮时,它称为toggleInverted()

toggleInverted() {
  if(this.state.inverted){
    this.setState({inverted: false});
  } else{
    console.log("got to else...");
    this.setState({inverted: true});
    console.log(this.state.inverted);
  }
}


反向字段在构造函数中初始化为false。但是,当我第一次加载页面时单击该按钮时,它无法正确重置状态。输出为:
    got to else... false

所以不知何故它进入了else语句,执行了setState,但是还没有将反转设置为true。

我缺少关于setState的内容吗?

最佳答案

setState不会立即更改组件状态。您的状态更改可能是异步的,因此不能保证console.log语句将打印更改后的状态。但是,setState总是会导致调用render方法,因此,如果在组件的render方法内控制台记录状态,则状态应该为true。

另外,this.setState({inverted: !this.state.inverted})是代码段的较短版本

10-06 02:29