浅谈Vue种的$nextTick机制(1)

文章详细介绍了Vue.nextTick方法的用法,包括在数据修改后确保DOM更新的机制,以及2.1.0版本后Promise支持的特性。它强调了Vue的DOM更新是异步进行的,并通过事件循环模型解释了nextTick的触发原理。
摘要由CSDN通过智能技术生成
官方介绍

Vue.nextTick([callback,context])

  • 参数

  • {Function} [callback]

  • {Object} [contect]

  • 用法

在下次DOM更新循环结束之后执行回调,在修改数据之后立即使用这个方法,获取更新后的DOM

// 修改数据

vm.msg = ‘Hello’

// 当我们在这里调用DOM的数据时,它其实还没有更新

Vue.nextTick(function () {

// DOM 更新了

})

// 2.1.0新增 Promise用法

Vue.nextTick()

.then(function () {

// 此时DOM已经更新

})

2.1.0 起新增:如果没有提供回调且在支持 Promise 的环境中,则返回一个 Promise。请注意 Vue 不自带 Promise 的 polyfill,所以如果你的目标浏览器不原生支持 Promise (IE:你们都看我干嘛),你得自己提供 polyfill

DOM循环更新

首先,Vue实例实现响应式并不是在数据改变之后就立即更新DOM,而是在一次循环的所有数据变化后再异步执行DOM更新

在这里简单总结一下事件循环

同步代码执行=>查找异步队列,进入执行栈,执行Callback1[事件循环1]=>查找异步队列,进入执行栈,执行Callback[事件循环2]=>…

即每一次异步的Callback都会再独立形成一次事件循环

因此我们可以推出nextTick的触发机制

一次循环种的所有代码执行完毕 = > DOM更新 = > 触发nextTick的回调Callback = > 进入下一次循环

下面来个例子,帮助更好的理解nextTick机制

{{content}}
在nextTick执行前获取内容:{{content1}}
在nextTick执行之后获取内容:{{content2}}
在nextTick执行前获取内容:{{content3}}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值