Vue 生命周期和钩子函数

一、什么是vue生命周期?

Vue 实例从创建到销毁的过程,就是生命周期。

从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。

生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁

1.创建阶段:创建响应式数据
2.挂载阶段:渲染模板
3.更新阶段:修改数据,更新视图
4.销毁阶段:销毁Vue实例
在这里插入图片描述

二、Vue生命周期钩子是什么?

Vue钩子函数就是指在一个Vue实例从创建到销毁的过程自动执行函数,让开发者可以在【特定阶段】运行自己的代码

在这里插入图片描述

二、钩子函数

  • beforeCreate:在Vue实例创建之前执行。

  • created:在Vue实例创建之后执行。

  • beforeMount:在Vue实例和DOM元素绑定之前执行。

  • mounted:在Vue实例和DOM元素绑定之后执行。

  • beforeUpdate:在修改Vue实例Data中定义的数据之前执行。

  • updated:在修改Vue实例Data中定义的数据之后执行。

  • beforeDestroy:在销毁Vue实例之前执行

  • destroyed:在销毁Vue实例之后执行

  • activated(组件激活时):和上面的beforeDestroy和destroyed用法差不多,但是如果我们需要一个实例,在销毁后再次出现的话,用 beforeDestroy和destroyed的话,就太浪费性能了。实例被激活时使用,用于重复激活一个实例的时候

  • deactivated(组件未激活时):实例没有被激活时。

  • errorCaptured(错误调用):当捕获一个来自后代组件的错误时被调用

三、各个钩子函数的特点

  • beforeCreate: 这个阶段主要是完成vue中关于生成周期以及事件的一些初始化工作。这时候,data和methods中的数据都没初始化

  • created: 实例创建完成,可访问data、computed、watch、methods上的方法和数据,未挂载到DOM,不能访问到el属性,el属性,ref属性内容为空数组,常用于简单的ajax请求,页面的初始化

  • beforeMount: 在挂载开始之前被调用,beforeMount之前,会找到对应的template,并编译成render函数

  • mounted:可以用于进行异步操作,比如请求数据、获取元素等。异步操作完成之后,可以根据需要进行页面的刷新或操作。需要注意的是,如果异步操作的执行时间过长,可能会导致DOM渲染缓慢甚至卡顿。

  • mounted的作用可总结为:

    • 进行数据初始化操作
    • 调用其他组件方法、获取其他组件属性
    • 在DOM渲染完毕后进行操作
    • 从服务端加载初始数据
    • 调用第三方插件
  • beforeupdate: 响应式数据更新时调用,发生在虚拟DOM打补丁之前,适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器

  • updated: 虚拟 DOM 重新渲染和打补丁之后调用,组件DOM已经更新,可执行依赖于DOM的操作避免在这个钩子函数中操作数据,可能陷入死循环

  • beforeDestroy: 实例销毁之前调用。这一步,实例仍然完全可用,this仍能获取到实例,常用于销毁定时器、解绑全局事件、销毁插件对象等操作

  • destroyed: 销毁实例上的data和所有methods,以及 过滤器、指令都处于不可用状态,还未真正销毁

四、父子组件钩子函数在三个阶段的代码执行顺序

  • 加载渲染过程: 父beforeCreate —> 父created —> 父beforeMount —> 子beforeCreate —> 子created —> 子beforeMount —> 子mounted —> 父mounted

  • 子组件更新过程: 父beforeUpdate —> 子beforeUpdate —> 子updated —> 父updated

  • 父组件更新过程: 父beforeUpdate —> 父updated

  • 销毁过程: 父beforeDestroy —> 子beforeDestroy —> 子destroyed —> 父destroyed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值