this.setState状态更新问题

每次执行this.setState时render重新渲染,但是this.setState是异步更新的,在还render还没有再次渲染之前想要立即更新状态需要进行一定的操作:

方法一:实用回调函数,在回调函数中状态会立即更新

this.setState({
  val: this.state.val+1
}, () => {
  console.log(this.state.val)
});

方法二:componentDidUpdate

componentDidUpdate(){

console.log(this.state.val)

方法三:把this.setState放在this.setTimeout里面

let self = this;
setTimeout(function () {
  self.setState({
    val:self.state.val+1
  });
  console.log(self.state.val);
})

但在render还没有更新之前这些地方以外的地方还是不能立即更新 

猜你喜欢

转载自blog.csdn.net/liulei21/article/details/81666199
今日推荐