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是同步的还是异步的的主要内容,如果未能解决你的问题,请参考以下文章