描述
react
的setState
是异步的,这样可以批量更新,不至于每次setState
都进行新的render
。
但是在调试代码时发现,在componentDidMount
中多次进行setState
,结果也是批量的,但是isBatchingUpdates
却为false
;
而在事件中触发的setState
,isBatchingUpdates
却是为true
。
这是为什么呢,为什么生命周期中的没使用批量更新标志,它是如何实现的呢?
测试代码
componentDidMount() {
this.setState({ count: this.state.count + 1 });
console.log(this.state.count);
this.setState({ count: this.state.count + 1 });
console.log(this.state.count);
}
onClickBtn = () => {
this.setState({ count: this.state.count + 1 });
console.log(this.state.count);
this.setState({ count: this.state.count + 1 });
console.log(this.state.count);
}
render() {
console.log("render", this.state.count);
return (
<h1>
test batchupdates
<button onClick={this.onClickBtn}>click me</button>
</h1>
);
}