决定写一系列关于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
暂时理解就这么多。。成长的路上,慢慢补充 ^ ^
理解有误,请纠正指教,谢谢?