React setState 没有得到更新
Posted
技术标签:
【中文标题】React setState 没有得到更新【英文标题】:React setState is not getting updated 【发布时间】:2020-06-30 10:50:24 【问题描述】:我在我的 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;
【问题讨论】:
这是什么? ReactJS 还是 React Native? 通过您的 console.log,您知道它是 null 吗? setState 是异步的,如果您在该 console.log 中看到它为 null 就可以了。尝试调用 setState 的回调。 【参考方案1】:来自documentation的ReactJS和生命周期:
浏览器每秒调用一次 tick() 方法。在里面,时钟 组件通过使用对象调用 setState() 来安排 UI 更新 包含当前时间。感谢 setState() 调用,React 知道状态已经改变,并再次调用 render() 方法 了解屏幕上应该显示的内容。这一次,this.state.date 在 render() 方法会有所不同,因此渲染输出将 包括更新时间。 React 会相应地更新 DOM。
最后一部分很重要:实际状态对象将在稍后更新,而不是在调用 setState 方法时直接更新。
On the same page:
React 可以将多个 setState() 调用批处理到单个更新中 性能。
因为 this.props 和 this.state 可能是异步更新的,所以你 不应依赖它们的值来计算下一个状态。
【讨论】:
以上是关于React setState 没有得到更新的主要内容,如果未能解决你的问题,请参考以下文章