我正在尝试使用setState存储一个值,但是我正在设置状态,在下一行我正在尝试console.log它,我无法在控制台中看到该值。
getInitialState: function(){
return{
myCountry: ""
}
}
var country = event.target.value;
this.setState({"myCountry": country});
console.log(this.state.myCountry); //prints nothing
console.log(event.target.value);
当我浏览这个时,我看到setState是异步的,但我无法理解。
答案 0 :(得分:2)
调用setState()后,您将无法获得状态的更新值。这是因为只要调用setState(),就会重新呈现视图。因此最好检查渲染中的更新值或将回调函数添加到setState 示例:强>
this.setState({"myCountry": country},function(){console.log(this.state.myCountry)});
或者,
render: function() {
console.log(this.state.myCountry)
}
答案 1 :(得分:1)
否
setState()不会立即改变this.state但会创建一个 待定状态转换。调用后访问this.state 方法可以返回现有值。
如果你想检查更新状态,你可以尝试在渲染方法中记录它,因为一旦状态改变,反应将以任何方式重新渲染。
答案 2 :(得分:0)
答案是它取决于何时被调用。在事件处理程序中调用时,会立即执行setState()。我相信在组件安装之前它也可能是同步的。
基本上每隔一段时间就会异步调用它。