反应setState没有更新

时间:2020-06-30 10:50:24

标签: reactjs setstate

我在我的react项目中添加了以下代码,以通过方法的响应设置状态。但是状态从未更新。始终为空。我可以在这里设置状态吗?

_onload():any{
    this._DataAccessObj = new DataAccess();
    let result = this._DataAccessObj.getRequest(this.props.itemId).then((item:IRequest) =>{
       console.log("item");
       console.log(item);
        this.setState ({
       Request: item
        });
       console.log(this.state.Request);
       console.log("setstate");

   });
   return;
 } 

1 个答案:

答案 0 :(得分:0)

来自ReactJS的documentation和生命周期:

浏览器每秒钟调用一次tick()方法。里面的时钟 组件通过使用对象调用setState()来调度UI更新 包含当前时间。感谢setState()调用,React 知道状态已更改,然后再次调用render()方法以 了解屏幕上应该显示的内容。这次, render()方法将有所不同,因此渲染输出将 包括更新的时间。 React会相应地更新DOM。

最后一部分很重要:实际状态对象将稍后在该行上更新,而不是在调用setState方法时直接更新。

On the same page:

React可以将多个setState()调用批处理为单个更新,以用于 性能。

由于this.props和this.state可能会异步更新,因此您 不应依赖于它们的值来计算下一个状态。