vue的生命周期

87 阅读2分钟

1.vue的各个生命周期:

  • (1)beforeCreate(创建前)

这里是引用表示实例完全被创建出来之前,vue 实例的挂载元素$el和数据对象 data 都为 undefined,还未初始化

  • (2)created(创建后)

数据对象 data 已存在可以调用 methods 中的方法操作 data 中的数据但 dom 未生成$el 未存在 。

  • (3)beforeMount(挂载前)

vue 实例$eldata 都已初始化,挂载之前为虚拟的 dom节点,模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中。data.message 未替换。

  • (4)mounted(挂载后)

vue 实例挂载完成data.message 成功渲染。内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了。实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,DOM 渲染在 mounted 中就已经完成了。

  • (5)beforeUpdate(更新前)

data 变化时,会触发beforeUpdate方法 。data 数据尚未和最新的数据保持同步。

  • (6)updated(更新后)

data 变化时,会触发 updated 方法。页面和 data 数据已经保持同步了

  • (7)beforeDestory(销毁前)

组件销毁之前调用 ,在这一步,实例仍然完全可用。

  • (8)destoryed(销毁后)

组件销毁之后调用,对 data 的改变不会再触发周期函数,vue 实例已解除事件监听和 dom绑定,但 dom 结构依然存在。

2.vue各个生命周期的应用场景

beforeCreate

created

mounted

updated

可以在此时加一些loading效果,在created时移除

在异步请求数据时执行,完成数据的初始化

操作dom时执行,也可以在此发ajax

当数据更新需要统一业务处理时

补充: 在进行异步请求时如果涉及到需要页面加载完成之后的操作就用mounted,在mounted中,由于此时html已经渲染出来了,所以可以直接操作dom节点。

3.vue父子组件的生命周期顺序

3.1. 子组件更新过程

父beforeUpdate-->子beforeUpdate-->子updated-->父updated

3.2 父组件更新过程:

父beforeUpdate-->父updated

3.3 销毁过程:

父beforeDestroy-->子beforeDestroy-->子destroyed-->父destroyed