美文网首页
vue生命周期

vue生命周期

作者: JuneLau | 来源:发表于2021-06-21 14:32 被阅读0次

Vue在被创建的时候都要经过一系列的初始化过程,这个初始化过程例如设置数据监听,编译模板,将实例挂载Dom并在数据变化时更新Dom。
在这个过程中也会运行生命周期钩子函数。

生命周期钩子函数:

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestory
  • destoryed

1.beforeCreate 和 created之间的生命周期

初始化事件,进行数据的观测,可以看到当created的时候已经和data绑定(所以当data改变的时候,视图也会进行变化)


image.png

2. created 和 beforeMount之间生命周期

image.png

created和beforeMount之间可以看到需要进行判断是否有el对象,有则继续向下编译,没有的话则停止编译,直到vue实例上调用vm.$mount(el)。
例如 注释掉

el:'#app'

则运行到created这个生命周期就停止运行了,
但是如果这个时候在vue实例上调用,就会继续向下执行

vm.$mount(el) // 这个el就是挂载的dom节点

template有否对于生命周期的影响
(1) 存在template时,将其作为模板编译成render函数
(2) 不存在时,则用外部HTML作为模板编译
可以看出temlate优先级要比外部HTML高
vue对象中还存在render函数,以createElement作为参数,然后做渲染操作,可直接嵌入jsx
渲染优先级顺序
render函数 > template >外部HTML

3.beforeMount和mounted之间生命周期

image.png

可以看到beforeMount之后,给vue实例添加$el对象,并且替换掉挂载的dom元素

4.beforeUpdate和updated之间生命周期

image.png

当data变化时,会触发到对应组件的重新渲染,先后调用beforeUpdate和updated钩子函数。

5.beforeDestory和destoryed

image.png

beforeDestory钩子函数在实例销毁前调用,在这一步,实例仍完全可用。
destoryed在实例销毁后调用,调用后,vue指定的所有东西都会解绑定,所有监听器会被移除,子实例也完全被销毁。

在vue-cli生成的项目中,打印生命周期前后如下:

 beforeCreate() {
    console.group('------beforeCreate创建前状态------');
    console.log('%c%s', 'color:red', 'el     :' + this.$el); //undefined
    console.log('%c%s', 'color:red', 'data   :' + this.$data); //undefined
  }
  created() {
    console.group('------created创建完毕状态------');
    console.log('%c%s', 'color:red', 'el     :' + this.$el); //undefined
    console.log('%c%s', 'color:red', 'data   :' + this.$data); //已被初始化
  }
  beforeMount() {
    console.group('------beforeMount挂载前状态------');
    console.log('%c%s', 'color:red', 'el     :' + this.$el); //已被初始化  虚拟dom
    console.log('%c%s', 'color:red', 'data   :' + this.$data); //已被初始化
  }
  mounted() {
    console.group('------mounted 挂载结束状态------');
    console.log('%c%s', 'color:red', 'el     :' + this.$el); //已被初始化
    console.log('%c%s', 'color:red', 'data   :' + this.$data); //已被初始化
  }

------beforeCreate创建前状态------
 el     :undefined
 data   :undefined
 ------created创建完毕状态------
 el     :undefined
 data   :[object Object]
 ------beforeMount挂载前状态------
 el     :undefined
 data   :[object Object]
------mounted 挂载结束状态------
 el     :[object HTMLElement]
 data   :[object Object]

参考:https://segmentfault.com/a/1190000011381906

相关文章

  • vue生命周期

    一 vue生命周期 Vue的生命周期:就是vue实例从创建到销毁的全过程 二 vue生命周期钩子 vue生命周期...

  • vue生命周期

    vue生命周期详: vue生命周期详解图: vue生命周期详解代码展示:

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • vue3较vue2的特别之处 - 生命周期

    vue2 生命周期 vue3 生命周期 将 Vue2 的生命周期钩子代码更新到 Vue3 参考地址:https:/...

  • 前端之路-VUE面试题

    vue生命周期面试题vue 生命周期是什么? Vue 实例从创建到销毁的过程,就是生命周期 beforeCreat...

  • Vue.js入门(二):生命周期

    1 生命周期 Vue生命周期是Vue实例从创建到销毁的过程,就是生命周期。在Vue实例的生命周期过程中会运行生命周...

  • vue生命周期

    vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么?...

  • Vue 生命周期

    vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么?...

  • vue学习记录

    vue全家桶 vue生命周期 生命周期的理解 新建项目 ①:cnpm install vue-cli -g (全...

  • Vue生命周期

    Vue生命周期 1、什么是vue生命周期? 答: Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、...

网友评论

      本文标题:vue生命周期

      本文链接:https://www.haomeiwen.com/subject/ojzkyltx.html