小知识

Vue生命周期与Vue.nextTick()使用

2018-11-20  本文已影响3317人  隔壁老王z
https://segmentfault.com/a/1190000008570622.jpg
image.png

注意:
created阶段的ajax请求与mounted请求的区别:前者页面视图未出现,如果请求信息过多,页面会长时间处于白屏状态。

单个组件的生命周期

  1. 初始化组件时,仅执行了beforeCreate/Created/beforeMount/mounted四个钩子函数
  2. 当改变data中定义的变量(响应式变量)时,会执行beforeUpdate/updated钩子函数
  3. 当切换组件(当前组件未缓存)时,会执行beforeDestory/destroyed钩子函数
  4. 初始化和销毁时的生命钩子函数均只会执行一次,beforeUpdate/updated可多次执行

Vue.nextTick():

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

获取更新后的DOM言外之意就是什么操作需要用到了更新后的DOM而不能使用之前的DOM或者使用更新前的DOM会出问题,所以就衍生出了这个获取更新后的 DOMVue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操作的 js代码,比如Swiper扩展包的:

var swiper = new Swiper('.swiper-container', {
                    pagination: '.swiper-pagination',
                    nextButton: '.swiper-button-next',
                    prevButton: '.swiper-button-prev',
                    paginationClickable: true,
                    spaceBetween: 30,
                    centeredSlides: true,
                    autoplay: 2500,
                    autoplayDisableOnInteraction: false
});

什么时候需要用Vue.nextTick():

mounted: function () {
this.$nextTick(function () {

// Code that will run only after the
// entire view has been rendered
})
}

https://mp.weixin.qq.com/s/4ukhHAcMQN07y0ssYqUeuA
https://segmentfault.com/a/1190000008570622
https://segmentfault.com/a/1190000008570874

上一篇下一篇

猜你喜欢

热点阅读