import React, { Component } from 'react'
class App extends Component {
state = {
num:1
}
addNum4 = ()=>{
this.setState({num:this.state.num + 1})
console.log('setState1', this.state);//1
this.setState({num:this.state.num + 1});
console.log('setState2', this.state);//1
setTimeout(()=>{
this.setState({num:this.state.num + 1})
console.log('setTime setState1',this.state);
this.setState({num:this.state.num + 1});
console.log('setTime setState2',this.state);
})
}
render() {
const {num} = this.state
return (
<div>
<button onClick={this.addNum4}>测试四</button>
</div>
)
}
}
export default App;
得到的结果为什么是这样
setState1 {num: 1}
setState2 {num: 1}
setTime setState1 {num: 2}
setTime setState2 {num: 2}
React18对自动批处理做出了一些更新,但是我对内部具体逻辑和实现还是不太明白
在React17中如果在setTimeout,setInterval等回调里面,更新就是同步的了,但是React18好像对这一点进行了更改???
https://github.com/reactwg/re...
在React 18使用
createRoot
就都是 batching了