React setState not update state

2022-08-30 02:12:31

所以我有这个:

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.dealersOverallTotaltotal


答案 1

setState()通常是异步的,这意味着在状态下,它尚未更新。尝试将日志放在方法的回调中。它在状态更改完成后执行:console.logsetState()

this.setState({ dealersOverallTotal: total }, () => {
  console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
}); 

答案 2

如果是钩子,你应该使用钩子。useEffect

const [fruit, setFruit] = useState('');

setFruit('Apple');

useEffect(() => {
  console.log('Fruit', fruit);
}, [fruit])