关于this.setState更新的题目

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是马上更新的,所以也能够猎取到更新后的数据。

    原文作者:heiyanquan
    原文地址: https://segmentfault.com/a/1190000009373718
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞