Vue 生命周期执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 生命周期执行顺序相关的知识,希望对你有一定的参考价值。

参考技术A 一、单组件执行顺序

二、父子组件执行顺序
_1为父组件 _2为子组件

对vue官网生命周期实际项目中vue执行顺序的理解

vue实际项目中会遇到很多对于画面显示及各个部分配合的顺序问题,后来发现是对vue生命周期没有理解透彻,现将vue生命周期简洁版理解记录如下:

我们都知道,vue的生命周期钩子函数有 beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed

那么这些钩子函数在实际项目中怎么是什么时间调用的呢?可以结合官网的vue实例模块去理解

一、

new vue()

此时实例化对象 、初始化事件和生命周期。

二、

beforeCreate

在初始化之后 也就是说、此时我们还无发的到 data、computed、methods、watch的值、一般用于非响应式初始化使用、

接下来就是我们的computed计算属性 在beforeCreate 与 Created之间调用、

三、

created

此时实例创建完成 在此时我们可以得到计算属性以及data等数据、因此我们做页面初始化时候 init方法一般都在created钩子中调用、

但是此时没有挂在到dom上不能访问$el 和$ref属性 ,此时调用$el会打印出undefined ,调用$ref会打印出空数组

接下来要判断有没有el如果没有的话生命周期停止,如果有el会去判断有没有template模版、如果有就会将template模版编译成render函数,如果没有就会把外部的HTML编译

四、

beforeMount

此时是挂载dom之前,我们已经找到了对应的template,此时$ref上有数据但是还没有在页面中显示,因此此时我们页面上的{{ }}还是没有被替换掉。

五、

Mounted

此时实例已经挂载dom 可以通过dom访问dom节点 $ref可以访问到属性

六、

beforeUpdate

此钩子函数是我们的组件更新之前调用 、数据已经发生改变 但是页面还没有变化、

适合在组件更新前访问已有的dom   可以在这个时点 添加画面项目等监听

七、

updated

此时组件dom已经更新完成 、页面已经发生改变、可执行依赖dom的操作了

八、

beforeDestroy

在实例销毁之前我们仍可以使用之前存在的实例

九、

destroyed

实例被销毁  跟实例有关的监听等都会销毁

 

以上是关于Vue 生命周期执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

Vue中父子组件生命周期的执行顺序

vue 父子组件生命周期函数执行顺序

vue 生命周期 和 生命周期的执行顺序

父组件和子组件之间的生命周期执行顺序

父子组件生命周期执行顺序

vue 生命周期钩子用法以及执行顺序