3 回答
TA贡献1828条经验 获得超3个赞
setState()通常是异步的,这意味着在您console.log处于状态时,它尚未更新。尝试将日志放入setState()方法的回调中。状态更改完成后执行:
this.setState({ dealersOverallTotal: total }, () => {
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});
TA贡献1827条经验 获得超8个赞
setState是异步的。您可以使用回调方法获取更新状态。
changeHandler(event) {
this.setState({ yourName: event.target.value }, () =>
console.log(this.state.yourName));
}
TA贡献1858条经验 获得超8个赞
setState()需要花费时间来更改值,而您使用的是javascript asynchronous,因此您console.log()将在更改值之前执行您的操作,因此您会setState看到结果。
为了解决这个问题,在日志中的数值callback function of setState一样
setTimeout(() => {this.setState({dealersOverallTotal: total}, function(){
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});
}, 10)
添加回答
举报