对 React setState 的误解
预计 6 分钟
之前一直以为同步的几个 setState
调用批量合并再一次性更新,结果发现这是我的一个误解。
如上所示的一个例子,控制台的输出为:
也就是说虽然调用了两次 setState
,但实际上只执行一次 render
,而之前我以为任何情况下都是这个样子的。
然而并不是,比如:
控制台的输入为:
也就是说执行了两次 setState
,进行了两次 render
原来,目前只有在 React 的事件函数当中,多次 setState
才会批量处理,因为所有的 React 事件函数会被 unstable_batchedUpdates
包裹起来,这是实现批量更新的关键。而 React 未来将更新策略默认为批量更新。
参考文章
#前端
#JavaScript
#React