Vue中nextTick()方法的使用介绍

19 篇文章 3 订阅
18 篇文章 0 订阅
使用场景

实际开发中,如果你想基于新的dom做点什么,那么对新dom的一系列js操作都需要放进Vue.nextTick()的回调函数中。
通俗的理解是:更改数据后,当你想立即使用js操作新的视图时,需要使用它

原理

Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和dom操作。在下一个事件循环时,Vue会清空队列,并进行必要的dom更新。因此可以在数据变化之后立即使用 Vue.nextTick(callback) ,这样回调函数在dom更新完成后就会被立刻自动调用

例子

在Vue生命周期的created()钩子函数中进行的dom操作一定要放在Vue.nextTick()的回调函数中。原因是在created()钩子函数执行的时候dom其实并未进行任何渲染,而此时进行dom操作无异于徒劳。所以此处一定要将dom操作的js代码放进Vue.nextTick()的回调函数中。而mounted()钩子函数执行时所有的dom挂载已完成

created(){
    let _this=this
     //不使用this.$nextTick()方法会报错
    _this.$nextTick(function(){ 
   		 //写入到DOM元素
        _this.$refs.aa.innerHTML="created中更改了按钮内容"
    })
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值