首先先上图片:
所谓生命周期,即为Vue在运行的过程中所经历的一系列流程,其中每一个步骤都会对应着相应的函数(生命周期函数)。
从new vue()开始:
- 初始化生命周期事件,但此时数据代理还未开始
- beforeCreate() :此时无法访问到data中的数据,以及methods 中的方法。
- 进行初始化,数据监测,数据代理...
- created() : 此时可以通过Vm来访问到data中的数据,和methods中所配置的方法。
- Vue 开始解析模版,在内存中生成虚拟Dom,但是此时页面上还不能显示解析好的内容。
- beforeMount(): 此时页面呈现的是未经Vue编译的Dom结构,此时对于Dom的操作无效。
- 将虚拟Dom转化为真实Dom插入页面中。
- Mounted(): 此时页面呈现的是vue编译过的Dom,至此初始化阶段结束,一般在此时可以做一些操作。(开启定时器,发送网络请求,订阅消息,绑定自定义事件,等一系列初始化操作)
- beforeUpdate():此时数据已经更新,但是页面上并没有更新,页面与数据未保持同步。
- Updated(): 根据新的数据,已经完成了新的Dom,并与旧的Dom元素进行比较,即完成了model到view的更新。
- 此时数据和页面都是最新的,并且已经保持同步。
- beforeUnmount():~~beforeDestory()~~此时Vm中的Date,methods指令,都处于可用状态,马上执行销毁。(此时惊醒关闭定时器,取消订阅,解绑自定义事件等收尾操作。)
- Unmounted():
destoryed():生命周期结束。
说到生命周期,必然会涉及到keep-alive 这里简单说明一下 。
keep-alive
actived : 当路由组件被激活是触发。
deactivated : 当路由组件失活时触发。
errorCaptured : 再捕获一个来自子孙组件错误时被调用。
renderTracked : 调试钩子,响应式依赖收集时调用。
renderTriggered: 调试钩子,响应式依赖触发时调用。
TIP
因为 setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写。
setup执行顺序在beforeCreate()之前。