1.vue的各个生命周期:
- (1)beforeCreate(创建前)
这里是引用表示实例完全被创建出来之前,vue 实例的挂载元素$el和数据对象 data 都为 undefined,还未初始化。
- (2)created(创建后)
数据对象 data 已存在,可以调用 methods 中的方法,操作 data 中的数据,但 dom 未生成,
$el未存在 。
- (3)beforeMount(挂载前)
vue 实例的
$el和data都已初始化,挂载之前为虚拟的 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