Vue3生命周期以及与Vue2的区别

server/2025/3/4 2:07:17/

文章目录

  • 一、Vue3生命周期核心阶段与钩子函数
  • 二、Vue3生命周期示例:选项式 vs 组合式 API
    • 选项式 API 示例(Vue2)
    • 组合式 API 示例(Vue3)
  • 三、Vue3与Vue2生命周期的核心差异
    • 1. 钩子函数更名
    • 2. 组合式 API 的影响
    • 3. 新增调试钩子
    • 4. 异步更新机制
  • 四、Vue3 vs Vue2 生命周期执行顺序对比
  • 五、最佳实践与常见问题
  • 六、总结

一、Vue3生命周期核心阶段与钩子函数

Vue3 的生命周期分为四个主要阶段:​创建、挂载、更新、销毁,每个阶段提供对应的钩子函数,允许开发者在关键节点插入逻辑。以下是各阶段的核心钩子及用途:

阶段钩子函数触发时机与用途
创建setup组合式 API 的入口,替代 Vue2 的 beforeCreate 和 created,初始化响应式数据
onBeforeMount组件挂载到 DOM 前,模板编译完成但未渲染
挂载onMounted组件已挂载到 DOM,可安全操作 DOM 或初始化第三方库(如图表)
更新onBeforeUpdate数据变化导致虚拟DOM更新前,可获取更新前的DOM状态(如滚动位置)
onUpdated数据变化后DOM已更新,需要避免在此修改数据以免循环更新
销毁onBeforeUnmount组件卸载前,清理定时器、事件监听等资源
onUnmounted组件已卸载,所有子实例和事件监听器已移除

新增调试钩子

  • onRenderTracked: 追踪虚拟DOM的依赖收集(首次渲染触发)
  • onRenderTriggerd: 追踪触发重新渲染的具体依赖(更新时触发)

二、Vue3生命周期示例:选项式 vs 组合式 API

选项式 API 示例(Vue2)

export default {data() {return { count: 0 };},created() {console.log('数据已初始化,可发起请求'); // [1,5](@ref)},mounted() {console.log('DOM 已挂载,可操作元素'); this.$refs.button.addEventListener('click', this.increment);},beforeUnmount() {this.$refs.button.removeEventListener('click', this.increment); // [9](@ref)},methods: {increment() { this.count++; }}
};

组合式 API 示例(Vue3)

import { ref, onMounted, onUnmounted } from 'vue';export default {setup() {const count = ref(0);const increment = () => { count.value++; };onMounted(() => {console.log('DOM 挂载完成'); // [4,5](@ref)document.getElementById('btn').addEventListener('click', increment);});onUnmounted(() => {document.getElementById('btn').removeEventListener('click', increment);});return { count };}
};

三、Vue3与Vue2生命周期的核心差异

1. 钩子函数更名

  • beforeDestroybeforeUnmount
  • destroyedunmounted

2. 组合式 API 的影响

  • setup 替代了 beforeCreatecreate, 逻辑集中管理
  • 钩子通过函数形式引入(如onMounted),提升代码复用性

3. 新增调试钩子

  • onRenderTrackedonRenderTriggered 用于性能分析

4. 异步更新机制

  • Vue3 的更新阶段采用异步渲染,优化性能并减少不必要的重复计算

四、Vue3 vs Vue2 生命周期执行顺序对比

以父子组件为例:

  • ​Vue2:父 created → 子 created → 子 mounted → 父 mounted。
    ​- Vue3:父 setup → 子 setup → 父 onBeforeMount → 子 onBeforeMount → 子 onMounted → 父 onMounted

五、最佳实践与常见问题

  • 避免在 mounted 中频繁操作 DOM,优先使用响应式数据驱动视图。
  • ​清理副作用**:在 onBeforeUnmount 中移除事件监听或定时器。
  • 组合式 API 的优势:将相关逻辑封装为自定义 Hook(如 useFetch),提升复用性

六、总结

Vue3 的生命周期设计在兼容 Vue2 的同时,通过组合式 API 和更精确的钩子命名,提供了更灵活的代码组织方式。无论是选项式还是组合式,合理利用生命周期钩子能显著提升组件性能和可维护性。升级到 Vue3 时,建议优先采用组合式 API 以发挥其最大优势.


http://www.ppmy.cn/server/172222.html

相关文章

力扣打卡第三天

力扣打卡第三天 题目 分析题目 理解快乐数概念结束条件: 快乐数的结果为 1,返回True无限循环找不到 1,变相说法就是数值在到达一定数量之后会开始重复进入一个闭环,也就是只需要发现出现之前有的数值就重复了,也就可…

【Docker基础】理解 Registry 镜像仓库:分类、工作机制、命令与实操

文章目录 一、什么是 Docker RegistryDocker Registry 的主要功能:镜像的结构:Docker Registry 的组成:使用例子:Docker Hub: 二、镜像仓库分类三、镜像仓库工作机制四、常用的镜像仓库1. DockerHub2. 国内镜像源配置镜…

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置

在某鱼买了两台华为AP 4050DN-HD , AP是二手的 , 在AC上上过线 , 所以就不能开机自选为FIP模式了 我没有AC无线控制器 , 就是买一个自己玩 , AP又是FIT瘦AP模式 ,所以我就想把AP的瘦AP模式改为FAT胖AP模式 1. 准备工作 1.1下载好对应软件,进入到 企业业务网站去下…

Qt空项目代码解释

一、 背景 创建的是一个 QWidget 项目。 二、main.cpp 1、图片 2、代码解释 (1)QApplication Qt 图形化界面中一定有 QApplication (2)Widget w; 是 QWidget 的子类。 (3)w.show(); 继承父类的显示…

计算机毕业设计SpringBoot+Vue.js实验室管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

RagFlow专题二、RagFlow 核心架构(数据检索、语义搜索与知识融合)

深入解析 RagFlow 核心架构:数据检索、语义搜索与知识融合 在前一篇文章中,我们对 RagFlow 的核心理念、与传统 RAG 的区别以及其适用场景进行了深入探讨。我们了解到,RagFlow 通过动态优化检索、增强生成质量以及实时知识管理,使得大模型在复杂任务中的表现更加稳定和高效…

AI 自动化编程:从效率革命到未来教育的革新

随着人工智能(AI)技术的迅速发展,自动化编程在过去几年里成为各行各业热议的话题。AI 不仅能够辅助程序员快速、高效地编写代码,还能在软件开发、算法设计乃至教育领域掀起一场新的革命。本文将围绕“AI 自动化编程”这一主题&…