当前位置: 首页 > ai >正文

Vue---vue2和vue3的生命周期

核心生命周期对比

生命周期阶段Vue 2 钩子Vue 3 Composition API
​初始化​beforeCreate无(使用 setup() 替代)
​初始化完成​created无(使用 setup() 替代)
​挂载前​beforeMountonBeforeMount
​挂载完成​mountedonMounted
​更新前​beforeUpdateonBeforeUpdate
​更新完成​updatedonUpdated
​卸载前​beforeDestroyonBeforeUnmount
​卸载完成​destroyedonUnmounted
​错误处理​errorCapturedonErrorCaptured
​激活(KeepAlive)​activatedonActivated
​停用(KeepAlive)​deactivatedonDeactivated
​服务端渲染​serverPrefetchonServerPrefetch

 Vue 3 核心变化​

  1. ​钩子重命名​

    • beforeDestroy → beforeUnmount
    • destroyed → unmounted
    • ​原因​​:更准确的语义表达(卸载 vs 销毁)
  2. ​Composition API​

    • 通过 setup() 函数替代 beforeCreate 和 created
    • 使用 onXxx 形式导入生命周期函数:
      import { onMounted, onUnmounted } from 'vue'export default {setup() {onMounted(() => {console.log('组件已挂载')})}
      }
  3. ​执行顺序​

    • Composition API 生命周期比 Options API ​​更早执行​
    • ​顺序示例​​:父组件 setup() → 父组件 onBeforeMount → 子组件 setup() → 子组件 onBeforeMount → 子组件 onMounted → 父组件 onMounted

生命周期阶段详解 

1. 初始化阶段(setup/beforeCreate/created)​
  • ​Vue2​​:
    • beforeCreate:实例初始化,数据观测/事件配置前
    • created:实例创建完成,可访问 data/methods,但 DOM 未挂载
  • ​Vue3​​:
    • setup():替代 beforeCreate 和 created,所有组合式逻辑在此初始化
    • ​注意​​:setup() 中无法访问 this
​2. 挂载阶段(onBeforeMount/onMounted)​
  • onBeforeMount​:
    • 模板编译完成,虚拟 DOM 已生成,但尚未挂载到真实 DOM
    • ​使用场景​​:SSR 中避免 DOM 操作
  • onMounted​:
    • DOM 已挂载,可操作 DOM 或初始化第三方库(如图表、地图)
    • ​注意​​:子组件的 mounted 先于父组件执行
​3. 更新阶段(onBeforeUpdate/onUpdated)​
  • onBeforeUpdate​:
    • 数据变化导致虚拟 DOM 重新渲染前
    • ​使用场景​​:获取更新前的 DOM 状态
  • onUpdated​:
    • 虚拟 DOM 已重新渲染并应用更新
    • ​注意​​:避免在此修改状态,可能导致无限循环
​4. 卸载阶段(onBeforeUnmount/onUnmounted)​
  • onBeforeUnmount​:
    • 实例销毁前,仍可访问组件状态
    • ​使用场景​​:清除定时器、取消事件监听
  • onUnmounted​:
    • 实例已销毁,所有绑定已移除
    • ​注意​​:无法再访问组件内的任何数据

 面试重点

Vue3 为什么移除 beforeCreate 和 created?​

setup() 函数统一处理初始化逻辑,更符合组合式 API 设计理念,减少冗余钩子。

setup() 中能访问 this 吗?为什么?​

不能。setup() 在实例初始化前执行,此时组件实例尚未创建。

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

  • ​挂载阶段​​:父 beforeMount → 子 beforeMount → 子 mounted → 父 mounted
  • ​更新阶段​​:父 beforeUpdate → 子 beforeUpdate → 子 updated → 父 updated
  • ​卸载阶段​​:父 beforeUnmount → 子 beforeUnmount → 子 unmounted → 父 unmounted

在 mounted 中修改数据会发生什么?​

 触发更新流程,依次执行 beforeUpdate 和 updated 钩子。需注意避免死循环。

http://www.xdnf.cn/news/863.html

相关文章:

  • 数字ic后端设计从入门到精通2(含fusion compiler, tcl教学)
  • 2025最新︱中国信通院静态应用程序安全测试(SAST)工具能力评估,悬镜安全灵脉AI通过评估!
  • 高保真动态项目管理图表集
  • 批量导出多个文件和文件夹名称与路径信息到Excel表格的详细方法
  • pytest基础-new
  • CSS基础-即学即用 -- 笔记1
  • Synopsys:printvar命令和puts/echo命令的区别
  • 15 - VDMA之SD卡读BMP图片显示实验
  • Unity中的数字孪生项目:两种输入方式对观察物体的实现
  • Linux系统安全及应用
  • android studio sdk unavailable和Android 安装时报错:SDK emulator directory is missing
  • Office文件内容提取 | 获取Word文件内容 |Javascript提取PDF文字内容 |PPT文档文字内容提取
  • 边缘计算场景下的GPU虚拟化实践(基于vGPU的QoS保障与算力隔离方案)
  • ‌信号调制与解调技术基础解析
  • Docker 集成KingBase
  • 瑞吉外卖-分页功能开发中的两个问题
  • 【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度
  • 8.1 线性变换的思想
  • 基于遗传算法的智能组卷系统设计与实现(springboot+ssm+React+mysql)含万字详细文档
  • Elasticsearch中的_source字段讲解
  • hadoop与spark的区别和联系
  • 大模型面经 | 春招、秋招算法面试常考八股文附答案(三)
  • 主流大模型(如OpenAI、阿里云通义千问、Anthropic、Hugging Face等)调用不同API的参数说明及对比总结
  • 53、Spring Boot 详细讲义(十)(Spring Boot 高级主题)
  • Python自动化selenium-一直卡着不打开浏览器怎么办?
  • 2025.4.21总结
  • 【架构】-- StarRocks 和 Doris 介绍与选型建议
  • [密码学实战]密评考试训练系统v1.0程序及密评参考题库(获取路径在文末)
  • 8086微机原理与接口技术复习(1)存储器(2)接口
  • 爬虫学习——LinkEXtractor提取链接与Exporter导出数据