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

embedded/2024/10/18 23:22:50/

一、概述

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">javascript">
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.ppmy.cn/embedded/6138.html

相关文章

多模态视觉语言模型:BLIP和BLIP2

1. BLIP BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP的总体结构如下所示&#xff0c;主要包括三部分&#xff1a; 单模态编码器&#xff08;Image encoder/Text encoder&#xff09;&#xff1a;分别进…

【数据挖掘】实验8:分类与预测建模

实验8&#xff1a;分类与预测建模 一&#xff1a;实验目的与要求 1&#xff1a;学习和掌握回归分析、决策树、人工神经网络、KNN算法、朴素贝叶斯分类等机器学习算法在R语言中的应用。 2&#xff1a;了解其他分类与预测算法函数。 3&#xff1a;学习和掌握分类与预测算法的评…

Element——组件

element官网 https://element.eleme.cn/#/zh-CN/component/layout vscode格式化快捷键&#xff1a;shiftaltf table表格 <template><el-table:data"tableData"style"width: 100%"><el-table-columnprop"date"label"日期…

【嵌入式学习】ARM day04.17

一、主要逻辑 写入数据&#xff1a; 主机发送起始信号主机发送8bit从机地址1bit写标志&#xff08;0&#xff09;从机回应应答信号主机发送8bit从机的寄存器地址从机回应应答信号主机发送8bit数据从机回应应答主机发送8bit数据从机回应应答主机发起终止信号 读取数据&#x…

1.为什么选择Vue框架

参考&#xff1a;百战程序员 为什么选择Vue框架 Vue是什么&#xff1f; 渐进式 JavaScript 框架&#xff0c;易学易用&#xff0c;性能出色&#xff0c;适用场景丰富的 Web 前端框架 为什么要学习Vue Vue是目前前端最火的框架之一Vue是目前企业技术栈中要求的知识点Vue可以…

Eureka、Nacos、Zookeeper、Redis等应用是AP还是CP?

理解CAP是什么&#xff1f; C Consistency 一致性 有集群cluster&#xff0c;如果有客户端对cluster进行了写操作&#xff0c;改变了cluster中的数据&#xff0c;则后面的客户端请求再次访问请求时&#xff0c;cluster返回给客户端的是最新的数据。 也可以理解为cluster中&…

海报设计大赛活动策划方案

赛前准备&#xff1a; 各小组制作影视或动漫广告&#xff0c;在决赛日前上交&#xff08;长度介乎15-60秒之间&#xff09;。 各进入决赛小组需准备一个舞台广告秀&#xff0c;人数不限&#xff0c;主题为初赛的广告设计。 具体流程&#xff1a; 1.在会场展示自己作品&#xf…

浏览器原理之浏览器同源策略

一 什么是同源策略 同源策略&#xff08;Same-Origin Policy, SOP&#xff09;是一种重要的安全策略&#xff0c;用于Web浏览器中。它限制了一个源&#xff08;origin&#xff09;的文档或脚本如何与另一个源的资源进行交互。这有助于防止恶意文档窃取另一个文档的数据&#x…