Vue的生命周期

101 阅读2分钟

生命周期的概念

每个 Vue 实例都有⼀个完整的⽣命周期:

  1. 开始创建
  2. 初始化数据
  3. 编译模版
  4. 挂载 DOM
  5. 渲染、更新数据 => 重新渲染
  6. 卸载

这⼀系列过程我们称之为 Vue 的⽣命周期。

生命周期的流程

- 1.0 创建一个 vue 的实例

image.png

Vue的生命周期

- 2.0 初始化事件 & 生命周期

- 在创建 vue 实例时,这个对象其实是空的,到了这一步才慢慢开始执行一些内容

- 3.0 初始化实例中 data 与 method

- 在这一步之前 data 与 method 中其实是没有内容的

- 4.0 判断并且生成虚拟 dom

- 判断实例中是否存在 el 属性:(el:是否指定的渲染的容器)

- 如果存在:

- 继续向下执行

- 如果不存在:

- 当调用 $mount 方法时,继续向下执行

- 判断实例中是否存在 template 属性

- 如果存在:

- 将 template 属性中对应的内容生成为一个虚拟 dom

- 如果不存在:

- 将 中的内容生成为一个虚拟 dom

- 5.0 将虚拟 dom 渲染到页面上

- 6.0 页面会进入挂载完毕的状态等待 data 中数据的改变

- 如果 data 中的数据发生改变:

- 将虚拟 dom 重新渲染,并且更新到页面上,再次进行挂载完毕的状态

- 7.0 销毁 vue 实例

- 注意点:

- el:是否指定的渲染的容器

- el 与 $mount 其实是一样的,都是用来指定页面的渲染容器

- template:

- 如果 vue 实例中不存在,会直接将  中的内容渲染到页面上

- 如果 vue 实例中存在,会直接将 template 属性中的内容渲染到页面上

- 虚拟 dom:

- 相当于将内容渲染到页面上进行的一次 打草稿

- 生命周期的钩子函数

各个生命周期的作用

生命周期执行时机
beforeCreate在组件实例被创建之初、组件的属性⽣效之前被调用
created在组件实例已创建完毕。此时属性也已绑定,但真实DOM还未⽣成,$el 还不可⽤
beforeMount在组件挂载开始之前被调⽤。相关的 render 函数⾸次被调⽤
mounted在 el 被新建的 vm.$el 替换并挂载到实例上之后被调用
beforeUpdate在组件数据更新之前调⽤。发⽣在虚拟 DOM 打补丁之前
update在组件数据更新之后被调用
activited在组件被激活时调⽤(使用了 <keep-alive> 的情况下)
deactivated在组件被销毁时调⽤(使用了 <keep-alive> 的情况下)
beforeDestory在组件销毁前调⽤
destoryed在组件销毁后调⽤