Vue中nextTick的理解

当你设置 vm.message = ‘new message’,该组件不会立即重新渲染。
因为vue更新DOM时,使用的是异步更新队列。目的是提高性能,避免无效的重复的DOM更新。即:vue 中更新数据后,并不会立即更新DOM,而是把数据引起的DOM更新放入到异步更新队列里。等待下次事 件循环(tick),并在两个tick之间进行UI渲染。 按照这个思路,程序员就不能在更改数据后,立即获取更新后的DOM,也不知道什么时候DOM能够 更新。基于此,vue提供了nextTick函数。
程序员只需要把 ”操作更新后DOM的代码“ 放入到$nextTick 的回调函数里。由nextTick内部,在更新完DOM后,调用回调函数Vue.nextTick(callback)。这样回调函数将在 DOM 更新完成后被调用。例如:

<div id="app">{{ message }}</div>
var vm = new Vue({
    el: '#app',
    data: {
        message: 'old message'
    }
})
vm.message = 'new message' // 更改数据
vm.$el.textContent //  旧的数据'old message'
Vue.nextTick(function () {
    vm.$el.textContent // 新的数据 'new message'
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值