setState在钩子函数和合成函数里是异步的执行的,setTimeout和setInterval是同步的
要获得同步数据,有3中方法:
1、传递函数给setState方法
this.setState((prestate, props) => ({
count: prestate.count + 1
}));
2、使用定时器setTimeout
setTimeout(() => {
this.changeVal();
console.log(this.state.count);
})
3、原生事件中修改状态:
document.body.addEventListener('click', this.changeVal, false);
changeVal = () => {
this.setState({
count: this.state.count
})
}