我遇到了一个非常奇怪的问题,我不知道该如何解决。
我有一个相当简单的方法:按下按钮时,它称为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})
是代码段的较短版本