vue.nextTick

9 篇文章 0 订阅

决定写一系列关于vue机制或语法的文章,先写简单的,慢慢补充

学习参考文章:https://www.jianshu.com/p/a7550c0e164f

Vue.nextTick( [callback, context] )

参数:callback:function; context : object
用法:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

看法:nextTick函数可以理解为在vue将最新更新的数据更新到DOM后执行的函数,实现原理就是用延迟函数来实现(Promise.then,MessageChannel,setTimeout(fn, 0))。所以我们可以理解数据更新到DOM上是需要一定的流程和时间的,所以如果我们的代码是这样的:

// html 中的代码:
status:<div id="status_part">{{status}}</div>
copy status:<div>{{status_bk}}</div>
// 数据的初始化:
status = true;
status_bk = '';
// 执行函数
this.status = false;
this.status_bk = document.getElementById('status_part').innerHTML;

这是页面的结果应该是

status:false
copy status:true

这种情况就说明了当我们改变变量值时,此时还未进行DOM的重新渲染,DOM中的值依然是原先的,若以若希望status_bk可以拿到最新的值,就应该使用nextTick

当然上述例子只是一个例子,并没有实际意义。列举一些实践中需要使用该函数的地方:
1、created钩子函数:在该函数中还尚未进行DOM渲染,若想进行DOM操作,可以将代码放在nextTick的回调函数中
2、在DOM绑定数据变化时,需要操作DOM:例如,我在更新完div绑定的数据后,需要拿到该div此时撑起的高度,则需要应用nextTick

暂时理解就这么多。。成长的路上,慢慢补充 ^ ^
理解有误,请纠正指教,谢谢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值