2017-07-26 74 views
0

根据setState documentation回调应在新状态设置后触发。然而,我的代码SetState回调不等待状态更新

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

打印:

Middle 
Grammar 

由于学校= “中” 为什么是的setState回调印刷 “语法”(这是this.state.lastSegment以前的值)

回答

4

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); 
});