反应setState不更新状态

JavaScript React.js

逆天LEY逆天

2020-03-18

所以我有这个:

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

newDealersDeckTotal只是一个数字数组,[1, 5, 9]例如,但是this.state.dealersOverallTotal没有给出正确的总数,但是total呢?我什至设置了超时延迟,以查看是否可以解决问题。任何明显的还是我应该发布更多代码?

第2098篇《反应setState不更新状态》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
Itachi阿飞 2020.03.18

只需componentDidUpdate(){}在您的代码中添加方法,它将起作用。您可以在此处检查本地响应的生命周期:

https://images.app.goo.gl/BVRAi4ea2P4LchqJ8

JinJinLEY 2020.03.18

使用异步/等待

async changeHandler(event) {
    await this.setState({ yourName: event.target.value });
    console.log(this.state.yourName);
}
Stafan猴子 2020.03.18

setState是异步的。您可以使用回调方法获取更新状态。

changeHandler(event) {
    this.setState({ yourName: event.target.value }, () => 
    console.log(this.state.yourName));
 }

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android