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

vue2和vue3生命周期的区别通俗易懂

用最直白的对比帮你理解 Vue2 和 Vue3 生命周期的区别,就像对比手机系统的升级


一、生命周期阶段对比表(老手机 vs 新手机)

阶段Vue2(老系统)Vue3(新系统)变化说明
初始化beforeCreate无(直接写 setup 里)像开机时的初始化设置,现在更简洁
创建完成created无(直接写 setup 里)
挂载前beforeMountonBeforeMount名字加 on,更直观
挂载完成mountedonMounted
更新前beforeUpdateonBeforeUpdate
更新后updatedonUpdated
销毁前beforeDestroyonBeforeUnmount改名!更贴切(拆零件 vs 卸载)
销毁后destroyedonUnmounted

二、最明显的 3 个变化

1. 两个钩子被合并了(像手机功能整合)
  • Vue2 的 beforeCreatecreated
  • Vue3 直接用 setup() 函数替代
  • 代码对比
    // Vue2
    export default {created() {console.log('组件出生了!');}
    }// Vue3
    export default {setup() {console.log('组件出生了!'); // 直接写这里}
    }
    
2. 销毁阶段改名了(更像拆房子)
  • beforeDestroyonBeforeUnmount
  • destroyedonUnmounted
  • 改名原因:更符合实际行为(卸载组件,而不是销毁)
3. 新增调试钩子(像手机开发者模式)
  • onRenderTracked(追踪谁触发了更新)
  • onRenderTriggered(追踪数据变化)
  • 使用场景:调试复杂数据流时超有用!

三、执行顺序(就像组装乐高)

父子组件挂载顺序不变:
父 setup → 父挂载前 → 子 setup → 子挂载前 → 子挂载完成 → 父挂载完成

四、组合式 API 的写法(像积木自由拼装)

Vue3 可以按需引入生命周期,不再强制写在固定位置:

import { onMounted, onUnmounted } from 'vue';export default {setup() {// 初始化代码(相当于 created)console.log('组件出生了!');onMounted(() => {console.log('挂载完成!');});onUnmounted(() => {console.log('组件被拆了!');});}
}

🌰 举个栗子:播放音乐组件

Vue2 写法:
export default {mounted() {this.playMusic(); // 挂载后播放},beforeDestroy() {this.stopMusic(); // 销毁前停止}
}
Vue3 写法:
import { onMounted, onUnmounted } from 'vue';export default {setup() {onMounted(() => {playMusic(); // 挂载后播放});onUnmounted(() => {stopMusic(); // 卸载时停止});}
}

总结:Vue3 就像更智能的手机系统

  1. 更简洁:合并了初始化阶段
  2. 更直观:钩子名字更贴切(比如 unmount
  3. 更灵活:组合式 API 让代码像搭积木一样自由
  4. 更强大:新增调试工具钩子

一句话:Vue3 生命周期本质没变,只是写法更现代化,就像手机系统升级后操作更顺手了! 📱✨

http://www.lryc.cn/news/537286.html

相关文章:

  • 使用 meshgrid函数绘制网格点坐标的原理与代码实现
  • postgresql源码学习(59)—— 磁盘管理器 SMGR
  • Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例
  • UE_C++ —— Structs
  • ArcGISPro 新建shp+数据结构
  • DeepSeek教unity------MessagePack-06
  • 2.【BUUCTF】bestphp‘s revenge
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-23- 操作鼠标拖拽 - 番外篇(详细教程)
  • Netty源码解析之异步处理(二):盛赞Promise中的集合设计
  • NetworkX布局算法:nx.spring_layout
  • Navicat导入海量Excel数据到数据库(简易介绍)
  • LeetCodehot100 力扣热题100 二叉树展开为链表
  • 2.14学习总结
  • 在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程
  • zola + github page,用 workflows 部署
  • 【科技革命】颠覆性力量与社会伦理的再平衡
  • UIView 与 CALayer 的联系和区别
  • Jenkins 新建配置 Freestyle project 任务 六
  • 深入解析A2DP v1.4协议:蓝牙高质量音频传输的技术与实现
  • mybatis-plus逆向code generator pgsql实践
  • Android Studio:RxBus结合ICompositeSubscription使用
  • 微软AutoGen高级功能——Magentic-One
  • redis cluster测试
  • 【ARM】JTAG接口介绍
  • 处理项目中存在多个版本的jsqlparser依赖
  • 部署 DeepSeek R1各个版本所需硬件配置清单
  • 数据结构:Map Set(一)
  • zabbix 监控系统 配置钉钉告警
  • 跟着李沐老师学习深度学习(十一)
  • 32单片机学习记录4之串口通信