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

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


印刷品:

Middle
Grammar


由于school =“ Middle”,为什么setState回调显示“ Grammar”(这是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);
});

10-06 12:26