反应setState不更新状态

所以我有这个:

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呢?我什至设置了超时延迟,以查看是否可以解决问题。任何明显的还是我应该发布更多代码?

Itachi阿飞2020/03/18 17:08:12

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

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

JinJinLEY2020/03/18 17:08:12

使用异步/等待

async changeHandler(event) {
    await this.setState({ yourName: event.target.value });
    console.log(this.state.yourName);
}
Stafan猴子2020/03/18 17:08:12

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

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