不等待状态更新的 SetState 回调



根据 setState 文档,回调应在设置新状态后触发。但是,我的代码

console.log(school);
this.setState({ lastSegment: school },console.log(this.state.lastSegment));

指纹:

Middle
Grammar

既然school="Middle",为什么setState回调打印"语法"(这是this.state.lastSegment的先前值(

callback是作为参数传递给另一个函数的函数,有时也称为anonymous函数,这意味着没有名称的函数,因此您就地执行console.log,并将值作为第二个参数返回给setState。你想传入一个函数,而不是console.log的结果。

this.setState({ lastSegment: school }, () => { 
console.log(this.state.lastSegment); 
});

或使用ES5语法:

this.setState({ lastSegment: school }, function() { 
console.log(this.state.lastSegment); 
});

最新更新