$nextTick
官方解释:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM
因为vue中不是数据一发生改变就马上更新视图层的,如果这样会带来比较差的性能优化,而是在vue中会添加
到任务队列中,待执行栈的任务处理完才执行。所以vue中我们改变数据时不会立即触发视图,但是如果我们需要
实时获取到最新的DOM,这个时候可以手动调用nextTick。

性能优化体现在哪里?

Vue 的性能优化主要体现在它的 异步更新策略批量 DOM 更新 机制,而 $nextTick 就是为了配合这些机制而存在的。让我用更简单的方式解释一下哈:

  1. 异步更新:当数据发生变化时,Vue 并不会立刻更新 DOM。相反,Vue 会将这些变化放到一个队列中,然后在当前的事件循环(event loop)结束时再统一处理这些更新。这样就避免了每次数据变化时立刻对 DOM 进行操作,减少了不必要的频繁更新。

  2. 批量更新:Vue 会对相同的 DOM 进行 批量更新,即如果在同一事件循环中多次修改数据,Vue 只会更新一次 DOM。这也是 Vue 的一种优化手段,不会因为多次数据变化导致多次 DOM 操作。

为什么这样做是性能优化呢?

  • 减少重绘重排:每次 DOM 更新都会引起页面的重绘或重排,这是非常耗性能的操作。通过异步和批量更新,Vue 可以把多次变化合并成一次更新,从而减少性能开销。
  • 降低浏览器负担:频繁操作 DOM 是很消耗资源的,尤其是在复杂的页面中。Vue 通过将更新推迟到当前事件循环结束后,能够让浏览器有时间完成其他更重要的任务。

所以,$nextTick 就是为了帮助你在 Vue 进行异步更新 DOM 的同时,如果你需要立刻获取更新后的 DOM,可以使用 $nextTick 来确保你拿到的 DOM 是最新的。这种机制既保证了性能,也保证了功能的正确性。