我尝试了一些调用this.setState({ foo: true })
并立即检查this.state.foo
但未返回新值true
的情况。
我现在无法告诉发生这种情况的确切情况(可能在同一次迭代中多次调用setState()
时,我不知道)。所以我想知道:
reactjs是否保证以下始终有效?
this.setState({ foo: true });
console.log(this.state.foo);
// => prints true
答案 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);
});