vue3中生命周期函数

news2024/10/1 17:16:17

CSDN文章质量分数查询:https://www.csdn.net/qc

前言:

        Vue.js由于其丰富的API和灵活易用等特性,能够帮助我们快速构建单页应用程序,,是目前最受欢迎的javascript框架之一。 再过去几年里,我们一直停留在Vue 2.x的学习和实践,而当下Vue 3.0是Vue.js的最新版本,很多大厂已经开始转型Vue 3.0。所以,我们必须紧跟时代步伐,熟练掌握并深刻理解Vue 3.0。

        什么是Vue生命周期呢?

        Vue实例从创建到销毁的过程,就是生命周期。就是vue实例从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,在vue生命周期中提供了一系列的生命周期函数。生命周期钩子在开发过程中非常有用,可以用来管理资源、执行清理操作、订阅事件或执行一些特定阶段需要完成的操作。然而,在 Vue 3.0 中,Composition API 的引入和对生命周期钩子的修改,使得代码组织更加模块化,提高了代码的可读性和可维护性。

正文:

        生命周期钩子是函数,是vue允许你在生命周期中的各个阶段进行调用的函数,以方便你在每个阶段执行自定义的操作!

        在 Vue 3 中,通过 Composition API,可以使用 on 前缀来定义组件生命周期钩子。这使得生命周期钩子在组件中的使用更加灵活。下面是 Vue 3 中常用的生命周期钩子及其使用方法:

一、生命周期的过程

1.创建阶段(Initialization):

        setup: 在组件创建之初执行,用于设置响应式数据、引入组件依赖等。这是 Composition API 的一部分,替代了 Vue 2.x 中的 data 和 computed。
        beforeCreate: 组件实例初始化之后,但在数据响应式处理之前执行。
        created: 组件实例创建完成,数据响应式处理完成,可以在这个阶段执行一些初始化操作。

2.编译阶段(Compilation):

        这个阶段包含了 Vue 3.0 的编译器(Compiler),将模板编译为渲染函数。

3.挂载阶段(Mounting):

        onBeforeMount: 在挂载开始之前被调用。
        onMounted: 组件挂载到 DOM 完成后调用,可以访问到组件的 DOM 元素。

4.更新阶段(Update):

        onBeforeUpdate: 组件数据更新前被调用,Dom 还未更新。  
        onUpdated: 组件数据更新后被调用,DOM 已经更新。

5.卸载阶段(Unmouting):

        onBeforeUnmount: 在组件实例卸载之前调用,用于清理一些组件相关的资源。
        onUnmounted: 组件卸载后调用,不再存在于 DOM 中。

6.错误处理阶段(Error Handling):

        onErrorCaptured: 当子组件出现错误时,可以通过这个生命周期钩子来捕获错误,并决定是否向上冒泡。

二、vue3中生命周期钩子函数的用法

<template>
  <div>{{ titleXu}}</div>
</template>

<script>
import { ref, onBeforeMount, onMounted, onBeforeUnmount, onUnmounted } from 'vue';

export default {
  setup() {
    const titleXu = ref('Hello, Vue 3 with Composition API!');

    onBeforeMount(() => {
      console.log('beforeMount');
    });

    onMounted(() => {
      console.log('mounted');
    });

    onBeforeUnmount(() => {
      console.log('beforeUnmount');
    });

    onUnmounted(() => {
      console.log('unmounted');
    });

    return {
      titleXu
    };
  }
}
</script>

三、缓存实例的生命周期

        当一个组件实例从 DOM 上移除但因为被 <KeepAlive> 缓存而仍作为组件树的一部分时,它将变为不活跃状态而不是被卸载。当一个组件实例作为缓存树的一部分插入到 DOM 中时,它将重新被激活

一个持续存在的组件可以通过 onActivated() 和 onDeactivated() 注册相应的两个状态的生命周期钩子:

  • onActivated 在组件挂载时也会调用,并且 onDeactivated 在组件卸载时也会调用。

  • 这两个钩子不仅适用于 <KeepAlive> 缓存的根组件,也适用于缓存树中的后代组件。

<script setup>
import { onActivated, onDeactivated } from 'vue'

onActivated(() => {
  // 调用时机为首次挂载
  // 以及每次从缓存中被重新插入时
})

onDeactivated(() => {
  // 在从 DOM 上移除、进入缓存
  // 以及组件卸载时调用
})
</script>

总结

        Vue 3.0 的 Composition API 允许您在 setup 中定义响应式数据、计算属性、方法等,这使得组件的生命周期更加灵活,因为可以将相关的代码按照逻辑分组,而不是按照生命周期钩子。此外,Vue 3.0 还引入了 onXXX 这样的生命周期事件监听器,用于替代 $on$off,以便更好地管理事件。

        总的来说,Vue 3.0 的生命周期更加精细化,允许您更好地组织和管理组件的逻辑。不同于 Vue 2.x,Vue 3.0 的生命周期不再强调“钩子”的概念,而更加关注组合(Composition)的方式来组织代码。这使得代码更加模块化和可维护。

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

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

相关文章

多维时序 | MATLAB实现TCN时间卷积神经网络多变量时间序列预测

多维时序 | MATLAB实现TCN时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现TCN时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现TCN时间卷积神经网络多变量时间序列预测 模型描述 MATLAB实现TCN时间卷…

用户缓冲区概念

先看现象&#xff0c;printf / fprintf / fwrite 一定封装了write , 但是执行代码看到大家都是去掉\n 和close(1),库函数无法打印&#xff0c;write可以 你不是说的库函数封装了write&#xff0c;怎么打印不出来&#xff1f; 如果执行这两句代码你会发现程序会等待一会最后结…

入门自动化测试框架知识,读这一篇就够了!

自动化测试因其节约成本、提高效率、减少手动干预等优势已经日渐成为测试人员的“潮流”&#xff0c;从业人员日益清楚地明白实现自动化框架是软件自动化项目成功的关键因素之一。本篇文章将从什么是真正的自动化测试框架、自动化脚本如何工作以及自动化测试框架会如何在测试过…

【Mybatis】3 的操作类型对象

前言知识汇总 上篇文章中我们已经详细介绍了Mybatis的存储类对象。我们上篇提到了&#xff1a; Mapper.xml当中的SQL标签都被解析成了一个一个的MappedStatement对象。那么我们当中的SQL是基于什么形式进行封装的呢&#xff1f; 我们要知道&#xff0c;Java当中一切皆对象。M…

工业路由器网关的网络协议之NAT技术

在物联网通讯领域&#xff0c;NAT技术能将内网的一个私有IP转换成一个公网IP去接入互联网&#xff0c;解决组建局域网络时私有IP地址无法在公网上进行路由的问题。 NAT&#xff08;Network Address Translation&#xff09;的三种方式&#xff1a; 静态NAT 1、一个私有IP对应…

【form校验】3.0项目多层list嵌套

const { required, phoneOrMobile } CjmForm.rules; export default function detail() {const { query } getRouterInfo(location);const formRef useRef(null);const [crumbList, setCrumbList] useState([{url: "/wenling/Reviewer",name: "审核人员&quo…

Cesium 展示——将每个点和点所在线段进行关联

文章目录 需求分析1. 数据结构2. 点线绘制3. ID获取4. 进行关联需求 点的集合和线的集合已知,现需将每个点和每个点所在的关联的线进行关联起来 输入 输出 分析 1. 数据结构 l

Mac平台文件传输工具Transmit 5

Transmit 是一款由Panic开发的文件传输软件&#xff0c;它可以帮助用户在不同的服务器间进行文件传输。Transmit 支持多种协议&#xff0c;包括FTP、SFTP、WebDAV等&#xff0c;同时它也内置了一个强大的文件管理器&#xff0c;可以方便地对文件进行管理和操作。 Transmit 的界…

分享86个节日庆典PPT,总有一款适合您

分享86个节日庆典PPT&#xff0c;总有一款适合您 链接&#xff1a;https://pan.baidu.com/s/1oE2LIr6en4js9L0fzUyqgw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。知识付费甚欢…

web —— css(1)

Web —— css基础 1. CSS样式表2. CSS的三种引入方式3. CSS 语法4. CSS 选择器4.1 元素选择器4.2 类选择器4.3 ID选择器4.4 属性选择器4.5 后代选择器4.6 子元素选择器4.7 伪类选择器4.8 分组选择器 5. 颜色和字体6. 显示方式display7. 盒子模型7.1 盒子模型 - 外边距塌陷7.2 盒…

Java之SpringCloud Alibaba【八】【Spring Cloud微服务Gateway整合sentinel限流】

一、Gateway整合sentinel限流 网关作为内部系统外的一层屏障,对内起到-定的保护作用&#xff0c;限流便是其中之- - .网关层的限流可以简单地针对不同路由进行限流,也可针对业务的接口进行限流,或者根据接口的特征分组限流。 1、添加依赖 <dependency><groupId>c…

串口中断(9)即时解析用户自定义通讯协议--接收数据固定情况

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

共享WiFi贴项目可以带来哪些优势?

当谈到共享WiFi贴的推广时&#xff0c;我们不禁要问&#xff1a;这项新兴的服务项目究竟给我们带来了哪些便利&#xff1f;在这篇文章中&#xff0c;我们将探讨共享WiFi贴推广所带来的益处以及其未来潜力。 共享WiFi贴的推广为人们提供了更加快捷的网络接入方式。无论是商场、餐…

远程运维用什么软件?可以保障更安全?

远程运维顾名思义就是通过远程的方式IT设备等运行、维护。远程运维适用场景包含因疫情居家办公&#xff0c;包含放假期间出现运维故障远程解决&#xff0c;包含项目太远需要远程操作等等。但远程运维过程存在一定风险&#xff0c;安全性无法保障&#xff0c;所以一定要选择靠谱…

项目构建工具maven的基本配置+idea 中配置 maven

&#x1f451; 博主简介&#xff1a;知名开发工程师 &#x1f463; 出没地点&#xff1a;北京 &#x1f48a; 2023年目标&#xff1a;成为一个大佬 ——————————————————————————————————————————— 版权声明&#xff1a;本文为原创文…

hp惠普星15青春版笔记本15s-dr2000/15s-du2000原厂Windows11家庭中文版OEM预装系统

适用型号&#xff1a; 15s-dr2002tx&#xff0c;15s-dr2003tx&#xff0c;15s-dr2004tx&#xff0c;15s-dr2005tx&#xff0c;15s-dr2006tx&#xff0c;15s-dr2016TU&#xff0c;15s-dr2017TU&#xff0c;15s-dr2020TU 15s-du2003tx&#xff0c;15s-du2004tx&#xff0c;15s-…

微信小程序(非个人)备案指南

一、小程序备案法律法规参考 1、《中华人民共和国反电信网络诈骗法》 第二十三条 设立移动互联网应用程序应当按照国家有关规定向电信主管部门办理许可或者备案手续。 2、《互联网信息服务管理办法》 第四条 国家对经营性互联网信息服务实行许可制度&#xff1b;对非经营性互…

多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测

多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测 目录 多维时序 | MATLAB实现TCN-selfAttention自注意力机制结合时间卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现TCN-s…

python自动化测试(2)-自动化基本技术原理

1 概述 在之前的文章里面提到过&#xff1a;做自动化的首要本领就是要会 透过现象看本质 &#xff0c;落实到实际的IT工作中就是 透过界面看数据。 掌握上面的这样的本领可不是容易的事情&#xff0c;必须要有扎实的计算机理论基础&#xff0c;才能看到深层次的本质东西。 …

零代码编程:用ChatGPT批量删除文件名的字符

文件夹里面的文件标题如下&#xff0c;后面都带有一个网址&#xff0c;怎么批量删除掉呢&#xff1f; 这样让ChatGPT编写一段Python代码&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个处理批量删除文件名中字符的任务&#xff0c;具体步骤如下&#xff1a; 打开…