美文网首页
vue.nextTick(callback)

vue.nextTick(callback)

作者: 焦迈奇 | 来源:发表于2019-10-19 17:00 被阅读0次

定义:在下次Dom更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的Dom。

(所以放在vue.nextTick()回调函数中执行的应该是对Dom进行操作的js代码)即,nextTick是将回调函数延迟在下一次dom更新数据后调用,当数据更新了,在dom中渲染后,自动执行该函数。

注意:Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。$nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM.

何时使用nextTick()?

  1. Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中。因为在created()钩子函数执行的时候Dom其实并未进行任何渲染,所以不可操作dom,此处进行的dom操作的js代码一定放在Vue.nextTicj()的回调函数中。相对应的mounted()钩子函数,该钩子函数执行时所有的DOM挂载已完成。


    image.png
  2. 当在项目中要在改变DOM元素的数据后基于新的DOM进行一系列的js操作都需要放在Vue.nextTick()的回调函数中。(更改数据后,立即使用js操作新的视图时)。


    image.png
  3. 在使用某些第三方插件时,希望在vue生成的某些dom动态发生变化时重新应用该插件,需要在$nextTick()的回调函数中执行重新应用插件的方法。

Vue.nextTick(callback)使用原理:

Vue是异步执行DOM更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环中观察到数据变化的watcher推送进该队列。如果这个watcher被触发多次,只被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOM操作。在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。当你设置 vm.someData = 'new value',DOM 并不会马上更新,而是在异步队列被清除,也就是下一个事件循环开始时执行更新时才会进行必要的DOM更新.

相关文章

  • vue.nextTick(callback)

    定义:在下次Dom更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的Dom。 (所以放在v...

  • Vue.nextTick(callback)

    定义:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。 所以就...

  • Vue中nextTick的简单理解

    nextTick使用场景:在数据变化之后使用 Vue.nextTick(callback),回调函数将在 DOM ...

  • js知识点5

    localStorage() 本地存储 callback、 #callback、 callback()、 c...

  • ES6的数组方法

    forEach(callback) map(callback) filter(callback) every(ca...

  • 2018-03-11 上课摘要

    今天的课主要讲了callback与正则表达式。 callback callback:主要是callback hel...

  • Express 极速掌握

    中间件的写法 支持 callback1,callback2、[callback1, callback2]、func...

  • cocos lua TextField鼠标事件

    cocos luaTextField:addEventListener(callback) callback = ...

  • callback&&callback()

    如果存在回调函数就执行! 这是利用了 JS &&符号的一个小技巧 && 符号在前面为假时就不会执行后面的语句了 所...

  • VUE api等

    全局 api Vue.nextTick Vue.set( target, propertyName/index, ...

网友评论

      本文标题:vue.nextTick(callback)

      本文链接:https://www.haomeiwen.com/subject/ttknmctx.html