setState是同步的还是异步的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setState是同步的还是异步的相关的知识,希望对你有一定的参考价值。

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)
}

以上是关于setState是同步的还是异步的的主要内容,如果未能解决你的问题,请参考以下文章

setState是同步的还是异步的

react的setState是异步还是同步

react的setState函数同步还是异步?

面试题:React中setState是异步还是同步?

setState是同步还是异步

面试官:react中的setState()是同步还是异步?如何证明?