深入setState
setState对状态的改变可能是异步的
如果改变状态的代码处于某个HTML元素的事件中,则其是异步的,否则是同步。
后面开发的时候始终当成异步的,然后使用回调函数进行处理。
this.setState(() => {
//改变状态
n: xxx,
}, () => {
//状态改变完成之后触发,改回调运行在render之后
xxxx
})
若遇到某个事件,需要同步调用多次,需要使用函数的方式得到最新状态。
this.setState(cur => {
//改变状态
return {
n: xxx
}
}, () => {
//状态改变完成之后触发,改回调运行在render之后
xxxx
})
React会对异步的setState进行优化。