很多时候我们在执行setState之后再执行某些方法,如果单纯把该方法放到setState函数之后,你可能会很惊奇的发现该方法在setState执行结束前已经执行了。
![](https://img.haomeiwen.com/i7208416/110c2df97c93e8d2.png)
从上面的程序已经可以发现setState()方法是异步的,console.log('first', this.state.number)在setState执行结束前已经执行了,添加定时器让我们的代码在setState之后执行并不是一个好的主意,我们并不知道setState方法什么时候执行结束。
在React官方的API中setState给出这样的描述:setState(object nextState[, function callback])。第一个参数是需要改变的状态,第二可选参数是一个回调函数,该函数在 setState 执行完毕并且组件重新渲染完成之后调用。
我们想在setState方法执行后执行我们的代码,不妨把我们的代码放到setState的回调函数。上述代码可修改为:
![](https://img.haomeiwen.com/i7208416/2c6a1c740567deb8.png)
网友评论