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)
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。