美文网首页
setState是同步还是异步?

setState是同步还是异步?

作者: ticktackkk | 来源:发表于2020-08-04 17:42 被阅读0次

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是同步还是异步?

      本文链接:https://www.haomeiwen.com/subject/jnzirktx.html