【发布时间】:2021-01-28 09:31:09
【问题描述】:
所以我有这个:
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 有吗?我什至设置了超时延迟,看看这是否解决了问题。
有什么明显的还是我应该发布更多代码?
【问题讨论】:
-
除了答案中所说的之外,您还明确记录了状态的值,之前您正在调用
setState。 -
@FelixKling 不,我在调用 this.state 在我设置它之后。我之前正在记录一个变量。没有?
-
由于超时,您的
setState确实在您记录状态后执行。我认为您在调试中要做的是将console.log部分放在超时内,将setState放在外面。 -
@FabianSchultz 你能解释一下我当时没明白的一件事吗?考虑这段代码:
if(this.state.playersOverallTotal > 21){ console.log('bust'); this.setState({playerBusted: true}); }当它超过 21 时,日志会触发,但状态不会改变,只有在数字再次增加时才会改变。例如如果它达到 24,它不会设置状态,但如果它达到 28,例如它会
标签: javascript reactjs state setstate