React 中的 setState:导航异步更新
背景:
在 React 中,setState( ) 用于更新组件的状态。然而,值得注意的是 setState() 并不总是立即执行的。它可能会异步执行,从而导致状态值存在潜在差异。
特定问题:
遇到问题的用户报告使用 setState() 状态更新不一致在组件方法中。具体来说,他们观察到在 setState() 之后访问状态的 console.log 语句并不总是反映预期的更新值。
代码片段:
let total = newDealersDeckTotal.reduce(function(a, b) { return a + b; }, 0); console.log(total, 'tittal'); // outputs correct total setTimeout(() => { this.setState({ dealersOverallTotal: total }); }, 10); console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); // outputs incorrect total
原因:
问题的出现是由于异步特性设置状态()。当第一个console.log执行时,状态还没有更新。因此,它会记录错误的值。
解决方案:
要解决此问题,建议使用 setState() 提供的回调函数来访问更新后的状态更新已完成。
this.setState({ dealersOverallTotal: total }, () => { console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); });
在此修改后的代码片段中,第二个 console.log 嵌套在回调函数中。这确保它仅在状态更新后执行,并提供正确的值。
以上是为什么我的'setState”更新没有立即反映在我的 React 组件中?的详细内容。更多信息请关注PHP中文网其他相关文章!