SetState回调不等待状态更新

时间:2017-07-26 23:34:29

标签: javascript react-native

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

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

打印:

Middle
Grammar

自学校="中学"为什么是setState回调打印"语法" (这是this.state.lastSegment的前一个值)

1 个答案:

答案 0 :(得分:8)

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