每次执行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还没有更新之前这些地方以外的地方还是不能立即更新