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