官方概述
每个 Vue 实例在被创建时都要经过一系列的初始化过程
如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。
这个过程中也会运行一些叫做生命周期钩子的函数,
这给了用户在不同阶段添加自己的代码的机会
生命周期中的this指向
生命周期钩子的 this
上下文指向调用它的 Vue 实例
因为this指向的要求,我们不能在生命周期函数中使用 箭头函数 防止this指向错误
可以做什么事儿
钩子函数 | 触发的行为 | 在此阶段可以做的事情 |
---|---|---|
beforeCreadted | vue实例的挂载元素 $el和数据对象data都为undefined,还未初始化。 | 加loading事件 |
created | vue实例的数据对象data有了,$el还没有 | 结束loading、请求数据为mounted渲染做准备 |
beforeMount | vue实例的$el和data都初始化了,但还是虚拟的dom节点,具体的data.filter还未替换。 | .. |
mounted | vue实例挂载完成,data.filter成功渲染 | 配合路由钩子使用 |
beforeUpdate | data更新时触发 | .. |
updated | data更新时触发 | 数据更新时,做一些处理(此处也可以用watch进行观测) |
beforeDestroy | 组件销毁时触发 | .. |
destroyed | 组件销毁时触发,vue实例解除了事件监听以及和dom的绑定(无响应了),但DOM节点依旧存在 | 组件销毁时进行提示 |
Vue实例的生命周期