Vue生命周期 $nextTick

1,099 阅读3分钟
  常见的有8个 created mounted updated destroyed
  用的比较少的是3个 activated deactivated errorCaptured
  1. beforeCreate (实例创建前被调用) 此时,数据观测 事件配置还未开始

  2. created (实例创建后被调用) 此时,实例已完成以下的配置:数据观测,属性和方法的运算,watch/event 事件回调。

  3. beforeMount (实例被挂载到容器前被调用)此时,render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上mounted el 被挂载到实例上去之后

  4. mounted(实例被挂载到容器后被调用) 实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。将模板中的xml渲染到html页面中。虚拟DOM变成了真实DOM

  5. beforeUpdate(数据更新前被调用) 发生在虚拟 DOM 打补丁之前。

  6. updated(数据更新后被调用) 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环

  7. activated keep-alive 组件激活时调用

  8. deactivated keep-alive 组件停用时调用

什么是vue生命周期

答: Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期

vue生命周期总共有几个阶段?

答:它可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后

第一次页面加载会触发哪几个钩子?

答:会触发 下面这几个beforeCreate, created, beforeMount, mounted

DOM 渲染在 哪个周期中就已经完成?

答:DOM 渲染在 mounted 中就已经完成了

v-if v-show能触发updated钩子嘛,具体过程是什么

答案: v-if会触发updated钩子,因为数据改变了,实例监测到了变化,就会引发beforeUpdate然后updated两个钩子。

  1. v-if:若初始对某个组件设置v-if:false 则该组件不会渲染,生命周期钩子不会执行,当false => true 时,组件会进行渲染,并依次执行该组件的beforeCreate,created,beforeMount,mounted 钩子,而true => false依次执行 beforeDestroy,destroyed 钩子
  2. v-show:一上来就会依次执行完整的生命周期beforeCreate,created,beforeMount,mounted 

AJAX请求建议何时发起?

答:created阶段的ajax请求与mounted请求的区别:前者页面视图未出现,如果请求信blog.csdn.net/sunhuaqiang…

mounted阶段子组件会一并挂载吗?

答:不会承诺同时挂载,如果希望等到整个视图都渲染完毕再挂载,可以用 vm.$nextTick

this.$nextTick的使用 blog.csdn.net/sunhuaqiang…

为什么prop的改变有时不会触发updated? 在线示例

  • 视图的改变才会带来 updated 的触发
  • 这个案例中,如果子组件的 虚拟dom 没变,简言之,你的 prop 内容并没有绑定到视图中的话,那么 updated 就不会触发