共计 510 个字符,预计需要花费 2 分钟才能阅读完成。
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)
}
正文完