Vue 2与Vue 3生命周期钩子的对比分析

一、概述

Vue 组件实例在创建时经历一系列初始化步骤,Vue 在合适的时机调用特定函数,允许开发者在特定阶段运行自己的代码,这些函数称为生命周期钩子。

二、规律

生命周期可分为四个阶段:创建、挂载、更新、销毁,每个阶段都有两个钩子,一个在前一个在后。

Vue 2 的生命周期:

⭐创建阶段: beforeCreate、created
⭐挂载阶段: beforeMount、mounted
⭐更新阶段:beforeUpdate、updated
⭐销毁阶段: beforeDestroy、destroyed

Vue 3 的生命周期:

⭐创建阶段: setup
⭐挂载阶段: onBeforeMount、onMounted
⭐更新阶段:onBeforeUpdate、onUpdated
⭐卸载阶段: onBeforeUnmount、onUnmounted

常用的钩子: onMounted (挂载完毕)、onUpdated (更新完毕)、onBeforeUnmount (卸载之前)

<template><div class="person"><h2>当前求和为:{{ sum }}</h2><button @click="changeSum">点击sum+1</button></div>
</template><!-- vue3写法 -->
<script lang="ts" setup name="Person">
import { ref, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue'
// 数据
let sum = ref(0)
// 方法
function changeSum() { sum.value += 1 }
console.log('setup')
// 生命周期钩子
onBeforeMount(() => {   console.log('挂载之前') })
onMounted(() => {       console.log('挂载完毕') })
onBeforeUpdate(() => {  console.log('更新之前') })
onUpdated(() => {       console.log('更新完毕') })
onBeforeUnmount(() => { console.log('卸载之前') })
onUnmounted(() => {     console.log('卸载完毕') })
</script>

三、区别:

1.命名差异:

  • Vue 2 的生命周期钩子以 before, created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, 和 destroyed 等为前缀。
  • Vue 3 的生命周期钩子以 on 为前缀,例如 onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, 和 onUnmounted 等。

2.新增钩子:

  • Vue 3 新增了一些新的生命周期钩子,如 onBeforeMount, onBeforeUpdate, onUpdated, onBeforeUnmount, 和 onUnmounted,用于替代 Vue 2 中的一些 before 和 destroyed 钩子。

3.执行顺序变化:

  • 在Vue 2中,beforeCreate 和 created 钩子在实例初始化之后立即执行。beforeMount 和 mounted 在挂载之前和之后执行,beforeUpdate 和 updated 在数据更新前和后执行,activated 和 deactivated 在keep-alive组件激活和停用时执行,beforeDestroy 和 destroyed 在实例销毁之前和之后执行。
  • 在Vue 3中,生命周期钩子的执行顺序与Vue 2中基本相同,但是由于引入了新的钩子,一些钩子的执行时机可能有所不同。

四、优缺点:

  • Vue 2 的生命周期钩子命名更加简洁直观,易于理解,但是较多的钩子可能会导致混乱。
  • Vue 3 的生命周期钩子命名更加统一,遵循了统一的命名规范,而且新增了一些方便的钩子,使得开发更加灵活。
  • 在执行顺序上,Vue 3 的生命周期钩子更加清晰,但是需要注意一些新增的钩子可能会增加学习成本和理解复杂度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些网络的常见问题

1. tcp和udp可以同时监听相同端口号吗&#xff1f; 答&#xff1a;可以。IP数据包首部有个叫协议字段&#xff0c;指出了上层协议是TCP还是UDP。 网络层读取数据包的时候&#xff0c;已经知道上层是什么报文&#xff0c;可以直接交给内核进程做区分处理。 2. 多个线程可以使用…

SpringCloud系列(12)--服务提供者(Service Provider)集群搭建

前言&#xff1a;在上一章节中我们成功把微服务注册进了Eureka集群&#xff0c;但这还不够&#xff0c;虽然注册服务中心Eureka已经是服务配置了&#xff0c;但服务提供者目前只有一个&#xff0c;如果服务提供者宕机了或者流量过大&#xff0c;都会影响到用户即服务使用者的使…

Java-GUI-AWT-布局

1 需求 Frame&#xff1a;默认布局是BorderLayoutDialog&#xff1a;默认布局是BorderLayoutPanel&#xff1a;默认布局是FlowLayout 2 接口 3 示例 在Java AWT&#xff08;Abstract Window Toolkit&#xff09;中&#xff0c;各种容器的默认布局方式如下&#xff1a; Frame…

【刷爆LeetCode_01题_合并两个有序数组】

算法题&#xff0c;好像是不让使用函数 一、题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。…

Oracle数据库的简单使用

Oracle简单使用 一、数据库的介绍二、Oracle介绍账号管理Oracle的安装Oracle服务的作用OracleRemExecService服务创建数据库 常用命令 三、SQL语言SQL分类实用的数据表添加注释数据操纵语言&#xff08;DML&#xff09;查询语句&#xff08;SELECT&#xff09;wherelikedistinc…

pycharm集成github项目,拉取项目并进行代码管理

首先你要有一个github项目&#xff0c;然后找到一个想要拉取github项目的本地路径&#xff0c;打开git命令行&#xff0c;执行git clone http…路径&#xff0c;可能会需要你输入git的用户名和密码&#xff1b;用pycharm打开该项目&#xff1b;添加python解释器&#xff0c;我用…

YOLOv8改进项目汇总-超全改进-ultralyticsPro介绍:订阅了《芒果YOLOv8原创改进专栏》的读者免费赠送,包括很多稀有改进

&#x1f525;&#x1f525;&#x1f525;专注于YOLOv8改进&#xff0c;NEW - YOLOv8 &#x1f680; in PyTorch >, Support to improve Backbone, Neck, Head, Loss, IoU, LA, NMS and other modules&#x1f680; Makes YOLOv8 improvements easy again 芒果出品 YOLOv8…

Linux中返回值0值与非零值问题

在学习Linux的过程中&#xff0c;尤其是使用C语言进行编程的过程中&#xff0c;常常会发现Linux系统中喜欢用int类型的0或者非0值作为返回值表示该调用函数操作的成功或者失败。而我们在算法编程或者使用C编程的过程中&#xff0c;往往喜欢使用bool值表示一个操作的成功或者失败…

上汽大通:依托电子签网络,升级产业供应链协同

2023年12月&#xff0c;法大大发布了中国首部《汽车行业合同数智化白皮书》&#xff08;点击阅读及下载&#xff1a;中国首部&#xff01;《汽车行业合同数智化白皮书》重磅发布 | 附下载&#xff09;。该白皮书中基于法大大自身参与汽车行业合同数智化建设的实践和思考&#x…

防反接、防过压、缓启动电路相关

一、防反接电路 电源正确接入时 电流从 VIN 端流向负载&#xff0c;经由 Q3(NMOS) 通向地&#xff08;GND&#xff09;。在上电瞬间&#xff0c;由于 MOS 管的体二极管效应&#xff0c;地回路通过体二极管接通。接下来&#xff0c;由于 Vgs(门源电压)大于 Vgsth(门限电压)&…

Neo4j图数据库

一、语句 (1)查看节点和节点间的关系 MATCH (n) RETURN n LIMIT 10000

【python】python新闻文本数据统计和聚类 (源码+文本)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Bentley二次开发教程02-开发环境搭建

1 Bentley 平台介绍 图 1 Bentley 平台介绍 Bentley 软件大致可分为四大平台&#xff0c;分别为用于设计的 Microstation 平台&#xff0c;用于协同的 ProjectWise 平台&#xff0c;用于对资产进行全生命周期管理的 AssetWise 平台和数据互联互通的 数字孪生平台 iTwin。 1.1 …

Linux文件系统与日志

一、inode和block 文件数据包括元信息与实际数据&#xff0c;文件存储在硬盘上&#xff0c;硬盘最小存储单位是扇区&#xff0c;每个扇区存储512字节 1.block(块)&#xff1a;文件系统中用于存储文件实际数据的最小单位&#xff0c;由文件系统进行分配和管理&#xff0c;并通…

【电子通识】什么是8D分析法?8D步骤及用法?

在问题分析时往往会听到8D报告这样的词汇。如在电源专题【电源专题】案例:电源芯片厂家怎么判断电源芯片端口是否损坏中我们使用的图片就来源于电源芯片厂家的8D报告。 什么是8D分析法? 8D问题分析由美国国防部于1974年创立,当时用于军用物资采购保障。目前在汽车产业、组装…

项目开发中的注意事项,帮你少走很多弯路,必读!!

项目开发过程中&#xff0c;为确保项目的顺利进行和最终成功&#xff0c;需要注意以下事项&#xff1a; 1. 明确项目目标与范围 清晰定义项目目标&#xff1a;确保所有团队成员对项目要达成的目标有统一认识&#xff0c;避免目标模糊导致的方向偏离。严格控制项目范围&#x…

MapReduce案例-电影网站数据统计分析

本文适合大数据初学者学习MapReduce统计分析业务问题的步骤和基础的MapReduce编程方法&#xff0c;初步掌握Hadoop对计算任务的管理。 本文末尾有全部数据集和完整代码连接。 1.准备工作 安装Hadoop:Hadoop 3.3.2 离线安装-CSDN博客 按照好Hadoop之后要检查一下datanode运行情况…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下&#xff1a;GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…

从0到1学习typescript(更新版)

1、常用ts基本命令 &#xff08;1&#xff09;下载 npm install typescript -g&#xff08;2&#xff09;检查ts版本 tsc -v&#xff08;3&#xff09;将ts编译为js tsc index.ts2、定义变量 首先要明确一个概念&#xff0c;ts中确定了类型之后&#xff0c;就不能再修改类…

SRS服务接入华为云CDN

CDN简介: CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网…