reactjs:setState()会立即改变this.state吗?

时间:2016-09-13 10:01:55

标签: reactjs

我尝试了一些调用this.setState({ foo: true })并立即检查this.state.foo但未返回新值true的情况。

我现在无法告诉发生这种情况的确切情况(可能在同一次迭代中多次调用setState()时,我不知道)。所以我想知道:

reactjs是否保证以下始终有效?

this.setState({ foo: true });

console.log(this.state.foo);
// => prints true

2 个答案:

答案 0 :(得分:5)

  

reactjs是否保证以下内容始终有效?

不,setState异步方法。如果你想获得更新状态,你应该使用回调作为第二个参数

this.setState({ foo: true }, () => {
  console.log(this.state.foo);
});

答案 1 :(得分:0)

它以异步方式完成。因此,您可能无法在方法中看到更新。检查componentDidUpdate中的内容。 或者您可以在setState回调中看到结果,如下所示:

this.setState({name: nextProps.site.name} , ()=>{

console.log(this.state.name);

});
相关问题