请问setState立即设置状态吗?

时间:2016-11-16 04:57:59

标签: javascript reactjs

我正在尝试使用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是异步的,但我无法理解。

3 个答案:

答案 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()。我相信在组件安装之前它也可能是同步的。

基本上每隔一段时间就会异步调用它。