SetState回调不等待状态更新
问题描述:
根据setState documentation回调应在新状态设置后触发。然而,我的代码SetState回调不等待状态更新
console.log(school);
this.setState({ lastSegment: school },console.log(this.state.lastSegment));
打印:
Middle
Grammar
由于学校= “中” 为什么是的setState回调印刷 “语法”(这是this.state.lastSegment以前的值)
答
callback
是作为参数传递给另一个函数的函数,有时称为anonymous
函数,它表示没有名称的函数,因此您正在执行console.log
,并返回值作为第二个参数t到setState
。你想传入一个函数,而不是console.log
的结果。
this.setState({ lastSegment: school },() => {
console.log(this.state.lastSegment);
});
,或者使用ES5语法:
this.setState({ lastSegment: school }, function() {
console.log(this.state.lastSegment);
});