简单理解nextTick的使⽤和原理

terry VueJs 247

nextTick在开发过程中应⽤的也较少,原理上和vue异步更新有密切关系,对于
⾯试者考查很有区分度,如果能够很好回答此题,对⾯试效果有极⼤帮助。

答题思路

  1. nextTick是做什么的?
  2. 为什么需要它呢?
  3. 开发时何时使⽤它?抓抓头,想想你在平时开发中使⽤它的地⽅
  4. 下⾯介绍⼀下如何使⽤nextTick
  5. 原理解读,结合异步更新和nextTick⽣效⽅式,会显得你格外优秀

回答范例:

  1. nextTick是⽤于获取下次DOM更新刷新的使⽤函数。
  2. Vue有个异步更新策略,意思是如果数据变化,Vue不会⽴刻更新DOM,⽽是开启⼀个队列,把组件更新函
    数保存在队列中,在同⼀事件循环中发⽣的所有数据变更会异步的批量更新。这⼀策略导致我们对数据的修
    改不会⽴刻体现在DOM上,此时如果想要获取更新后的DOM状态,就需要使⽤nextTick。
  3. 开发时,⽐如我希望获取列表更新后的⾼度就可以通过nextTick实现。
  4. nextTick签名如下: function nextTick(callback?: () => void): Promise<void>
    所以我们只需要在传⼊的回调函数中访问最新DOM状态即可,或者我们可以await nextTick⽅法返回的
    Promise之后做这件事。
  5. 在Vue内部,nextTick之所以能够让我们看到DOM更新后的结果,是因为我们传⼊的callback会被添加到队列
    刷新函数(flushSchedulerQueue)的后⾯,这样等队列内部的更新函数都执⾏之后,所有DOM操作也就结束
    了,callback⾃然能够获取到最新的DOM值。
  • 暂无回复内容