3 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
setState()通常是異步的,這意味著在您console.log處于狀態(tài)時(shí),它尚未更新。嘗試將日志放入setState()方法的回調(diào)中。狀態(tài)更改完成后執(zhí)行:
this.setState({ dealersOverallTotal: total }, () => {
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
setState是異步的。您可以使用回調(diào)方法獲取更新狀態(tài)。
changeHandler(event) {
this.setState({ yourName: event.target.value }, () =>
console.log(this.state.yourName));
}

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
setState()需要花費(fèi)時(shí)間來更改值,而您使用的是javascript asynchronous,因此您console.log()將在更改值之前執(zhí)行您的操作,因此您會(huì)setState看到結(jié)果。
為了解決這個(gè)問題,在日志中的數(shù)值callback function of setState一樣
setTimeout(() => {this.setState({dealersOverallTotal: total}, function(){
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});
}, 10)
添加回答
舉報(bào)