setState 只在合成事件和钩子函数中是“异步”的,在原生事件和 setTimeout 中都是同步的。

合成事件:就是react 在组件中的onClick等都是属于它自定义的合成事件
原生事件:比方通过addeventListener增加的,dom中的原生事件
以下为同步拿到数据

在setState中的回调函数中拿到

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

在setTimeOut中拿到

setTimeout(()=>{      this.setState({count:this.state.count})      console.log(this.state.count)    },0) 

在原生事件中批改状态

state = {    count:0};componentDidMount() {    document.body.addEventListener('click', this.changeVal, false);}changeVal = () => {    this.setState({      number: 1    })    console.log(this.state.count)}