this.setState是异步,所以在this.setState之后立即调用this.state是获取不到最新的数据的,那么怎么获取最新的数据呢?下面介绍三个方法:
1.回调函数callback
this.setState({
val: this.state.val+1
}, () => {
console.log(this.state.val)
});
2.componentDidUpdate
componentDidUpdate(){
console.log(this.state.val);
}
在this.setState之后去componentDidUpdate函数中调用,此时的this.state已经更新
3.将this.setState放入setTimeout函数中
let self = this;
setTimeout(function () {
self.setState({
val:self.state.val+1
});
console.log(self.state.val);
})
在setTimeout函数中,在this.setState之后this.state是立即更新的,所以也可以获取到更新后的数据。