Vue 生命周期理解

在这里插入图片描述

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

1. 初始化

new Vue() 实例化之后,Vue 会调用 _init 函数进行初始化;它会初始化生命周期、事件、props、methods、data、computed 和 watch等。 new Vue() 实例化之后,Vue 会调用 _init 函数进行初始化;它会初始化生命周期、事件、props、methods、data、computed 和 watch等。

 Vue.prototype._init = function(options) {
        initLifecycle(vm)
        initEvents(vm)
        initRender(vm)
        callHook(vm, 'beforeCreate') // 拿不到 props data
        initInjections(vm) 
        initState(vm)  // 所有数据的初始化
        initProvide(vm)
        callHook(vm, 'created')
    }

2. beforeCreate 和 created 之间

初始化完成之后,到 beforeCreate 周期,在 beforeCreate 和 created 之间进行数据的观测。可以看到 created 的时候数据已经和 data 属性进行绑定,放在 data 中的属性值发生变化时,视图也会改变。

注意: 此时还没有 el 选项

3. created 和 beforeMount 之间

在这之间,首先会判断对象是否有 el 选项,如果有的话就继续向下编译;没有的话,则停止变编译,也就意味着停止了生命周期,直到在该 Vue 实例上调用 vm.$mount(el)。

接着判断有无 template 选项:
1)如果 Vue 实例对象中有 template 参数选项,则将其作为模版编译成 render 函数
2)如果没有 template 选项,则将外部 HTML 作为模版编译。
3)可以看出 template 中的模版优先级要高于 外部 HTML。

4. beforeMount 和 mounted 之间

给 Vue 实例对象添加 $el 成员,并且替换掉挂载的 dom 元素。在 beforeMount 之前 el 还是 undefined。

5. beforeUpdate 和 updated 之间

当 data 中的数据发生改变时,会触发对应的组件的重新渲染。

6. beforeDestory 和 destoryed

beforeDestory 钩子函数在实例被销毁之前调用,此时,实例仍然可用。
destroyed 在实例被销毁之后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器都会被移除,所有的子实例也都会被销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值