Vue中updated()和nextTick()的区别
updated()是Vue常规8个生命周期中的一个。nextTick()是Vue特殊3个生命周期中的一个。两者用法相近,学习的时候想到了这个问题:两者有什么区别呢?分享一下我总结的两者的区别。有问题可以指出。
- 使用场景不同。有时候只需要下一次更新DOM时触发。回调函数写在
updated()里会导致每次数据改变、DOM更新时,回调函数都会被触发。 - 触发顺序不同。响应式数据发生变化时,Vue会立刻将更新的全部微任务按照顺序(
beforeUpdate() update() updated())插入到微任务队列中。之后Vue对虚拟DOM树进行更新。之后虚拟DOM树和真实DOM树进行对比更新。但此时浏览器不会立即渲染更新后的真实DOM树,而是会先清空微任务队列。在顺序执行微任务时,在updated()执行结束后会立即执行nextTick(), 即便后面还有别的微任务。因此执行顺序updated()在前,nextTick()在后.
因此,nextTick钩子是下一次渲染时执行这个回调函数,但是updated是每次重新渲染时,都执行回调函数updated.
浙公网安备 33010602011771号