3 回答

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

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

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