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.

posted @ 2023-11-17 16:58  cmk123456  阅读(497)  评论(0)    收藏  举报