beforeCreate(){} 创建前
实例完全被创建出来之前,实例dom和数据对象 data 都为 undefined,还未初始化。
created(){} 创建后
数据对象 data 已存在,此时可以调用 methods 中的方法,操作 data 中的数据,但实例dom 还未生成,不能进行dom操作,如果需要操作dom,可以在 this.$nextTick(() => { }) 中进行操作。
beforeMount(){} 挂载前
vue 实例的 $el 和 data 都已初始化,挂载之前为虚拟的 dom节点,模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中。
mounted(){} 挂载后
vue 实例挂载完成。内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了。实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,dom 渲染在 mounted 中就已经完成了。
beforeUpdate(){} 更新前
data 数据发生了变化,但页面上的data还没有进行同步更新,此时会触发执行beforeUpdate方法 。
updated(){} 更新后
页面和 data 数据已经保持同步后,会触发执行updated方法。
beforeDestory(){} 销毁前
组件销毁之前调用 ,在这一步,实例仍然完全可用。
destroyed(){} 销毁后
组件销毁之后调用,对 data 的改变不会再触发周期函数,vue 实例已解除事件监听和 dom绑定,但 dom 结构依然存在。
补充:
被包含在 keep-alive 中创建的组件,会多出两个生命周期的钩子:
activated(组件激活时使用)
deactivated(组价停用时调用)
捕获到子孙组件的错误时被调用errorCaptured