vue—生命周期

生命周期是组件从创建到销毁的一系列钩子函数,可在特定的时间状态下执行代码。这些钩子函数提供了对组件生命周期的直接访问,使开发者可在不同的阶段执行自己的逻辑。

一、基本内容

vue2和vue3的生命周期有所不同,但基本概念一致。

阶段 vue2 vue3 触发时机 特点
创建阶段 beforeCreate beforeCreate 实例初始化之后,数据观测和事件配置之前 无法访问data、computed、methods等
创建阶段 created created 实例创建完成后 可以访问数据,未挂载DOM
挂载阶段 beforeMount beforeMount 挂载开始之前 render函数首次被调用,已生成虚拟DOM,未渲染
挂载阶段 mounted mounted 实例被挂载到DOM之后 可以访问真实DOM,一般在这一阶段请求加载初始数据
更新阶段 beforeUpdate beforeUpdate 数据变化导致DOM重新渲染之前 可以在更新前访问现有DOM状态
更新阶段 updated updated DOM重新渲染后 避免在这一阶段修改数据,可能导致无限循环
卸载阶段 beforeDestroy beforeUnmount 实例卸载之前 清理前的最后时机
卸载阶段 destroyed unmounted 实例卸载完成之后 清除计时器、取消订阅、解绑监听事件等

二、setup

setup是vue3组合式API(Composition API)的入口函数,它在组件实例创建之前执行,是组合式API的核心。

setup本身相当于:beforeCreate+created。

当setup与beforeCreate/created同时使用时的执行顺序:setup--->beforeCreate--->created。

常见使用方式:<script setup>语法糖

在setup中使用生命周期函数时需要加前缀on:mounted------onMounted、updated------onUpdated等。

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

挂载阶段 :父 beforeCreate → 父 created → 父 beforeMount → 子 beforeCreate**→**

子 created → 子 beforeMount → 子 mounted → 父 mounted

更新阶段:父 beforeUpdate → 子 beforeUpdate → 子 updated → 父 updated

卸载阶段:父 beforeUnmount → 子 beforeUnmount → 子 unmounted → 父 unmounted

四、keep-alive

<keep-alive>是Vue 内置的一个抽象组件,用于缓存不活动的组件实例,而不是销毁它们。它可以保留组件状态,避免重复渲染,提升性能。

<keep-alive> 包裹的组件会增加 activated 和 **deactivated**的钩子函数。

activated:组件被激活(从缓存中被恢复)时触发

deactivated:组件被停用(进入缓存)时触发

keep-alive包裹的组件触发顺序:

1)首次进入:onMounted→onActivated

2)切换到其他页面:onDeactivated

3)再次进入:onActivated(不会再触发onMounted)

相关推荐
福兮说3 小时前
前端下载大文件,点了按钮半天没反应:fetch + blob 的三个问题和三种替代写法
前端·javascript·性能优化·文件下载
GreenTea3 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
科技观察哨4 小时前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
niucloud-admin4 小时前
JAVA V6 多商户商城 开发文档——web前端
前端
颜进强4 小时前
16 · NestJS LifecycleEvents 生命周期事件:五个钩子、三条边界,和 rag-server 的优雅停机
前端·后端·ai编程
今年下半年6 小时前
【VUE】整合腾讯地图、自定义区域边界、村委名称及资产统计(放大显示资产点位)
前端·javascript·vue.js
郑州光合科技余经理6 小时前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程
前端snow7 小时前
ai agent --- DeepAgents 中间件
前端
data analyse 4568 小时前
报表能自定义的国内统计工具有哪些
前端·数据分析