【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡

本文主要是介绍【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

日期:2024年6月22日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006

说在最前面:本文 vue3 的示例代码,在没有另外声名的情况下,均采用 <script setup> 组合式代码风格,风格统一,避免混乱,请各位新老食客放心食用哈 ^ _ ^


文章目录

  • 一、前言
  • 二、组件的生命周期是什么?
  • 三、组件的生命周期各个阶段
    • 1、创建阶段:
    • 2、挂载阶段:
    • 3、更新阶段:
    • 4、卸载阶段:
  • 四、vue2和vue3生命周期的对比
  • 五、如何使用生命周期钩子函数
    • 1、选项式示例
    • 2、组合式示例
  • 六、总结


在这里插入图片描述


一、前言

Vue.js 的世界中,生命周期更像是一段旅程从出生到成长,再到衰老和最终的归宿。在开发应用程序时,组件的生命周期管理是一个非常重要的环节。正确地使用生命周期钩子,可以帮助我们更好地了解组件从创建、运行到卸载的过程,从而实现对组件状态的合理控制。

二、组件的生命周期是什么?

简单来说,生命周期就是一个组件从创建到卸载的整个过程。在这个过程中,Vue3 为我们提供了一系列的钩子函数,让我们可以在不同阶段介入并进行相应的处理

三、组件的生命周期各个阶段

1、创建阶段:

  • setup():这是Vue3新增的生命周期钩子,用于替代Vue2中的 beforeCreatecreated 钩子。在组件被创建之前,setup() 函数会被执行。它是响应式系统的入口,可以在其中声明响应式状态计算属性方法等。

2、挂载阶段:

  • onBeforeMount()组件挂载到 DOM 之前执行。此时,模板已经编译完成,但尚未挂载到实际的 DOM 元素上。
  • onMounted()组件挂载到 DOM 后执行。此时,组件已经渲染到实际的DOM元素上,可以执行DOM操作。

3、更新阶段:

  • onBeforeUpdate()在组件的数据发生变化,但尚未重新渲染 DOM 之前执行。此时,可以访问到更新前的 DOM 元素。
  • onUpdated()组件重新渲染 DOM 后执行。此时,组件已经完成了更新,可以访问到更新后的 DOM 元素

4、卸载阶段:

  • onBeforeUnmount()在组件即将被卸载之前执行。此时,组件仍然完全可用,但即将被销毁。
  • onUnmounted()组件被卸载后执行。此时,组件已经被销毁,所有的事件监听器、子组件等都被移除。

四、vue2和vue3生命周期的对比

网上资料层次不齐,有些vue2和vue3的生命周期混乱一锅炖,所以这里我给大家整理了一份生命周期对比图,希望可以让各位老铁不再为其所困惑。
在这里插入图片描述
Vue 3 的设计确实令人欣赏,其组件的卸载挂载过程体现了设计上的严谨性和美感,这种“前后呼应”的对称美不仅提高了开发效率,也增强了代码的可读性和可维护性。

五、如何使用生命周期钩子函数

在Vue3中,我们可以使用选项API或组合API来访问和使用生命周期钩子函数。在使用选项API时,我们可以直接在组件选项中定义生命周期钩子函数。而在使用组合API时,我们需要从Vue中导入相应的生命周期钩子函数,并在setup()函数中使用它们。

1、选项式示例

<script>  
export default {  beforeMount() {  // 组件挂载前的行为  },  mounted() {  // 组件挂载后的行为  },  beforeUpdate() {  // 组件更新前的行为  },  updated() {  // 组件更新后的行为  },  beforeUnmount() {  // 组件卸载前的行为  },  unmounted() {  // 组件卸载后的行为  },  // 其他选项如 data、methods、computed 等...  
};  
</script>  <style>  
/* 组件样式 */  
</style>

2、组合式示例

  • export default + setup()
<script>
import { onBeforeCreate, onCreated, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue';export default {setup() {onBeforeMount(() => {// 组件挂在前的行为});onMounted(() => {// 组件挂在后的行为});onBeforeUpdate(() => {// 组件更新前的行为});onUpdated(() => {// 组件更新后的行为});onBeforeUnmount(() => {// 组件卸载前的行为});onUnmounted(() => {// 组件卸载后的行为});}
};
</script>
  • <script setup>
<script setup>
import { onBeforeCreate, onCreated, onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue';onBeforeMount(() => {// 组件挂在前的行为
});onMounted(() => {// 组件挂在后的行为
});onBeforeUpdate(() => {// 组件更新前的行为
});onUpdated(() => {// 组件更新后的行为
});onBeforeUnmount(() => {// 组件卸载前的行为
});onUnmounted(() => {// 组件卸载后的行为
});
</script>

六、总结

Vue3生命周期管理 是我们在开发过程中不可或缺的一部分,通过了解生命周期各个阶段的作用,我们可以更好地安排组件的状态管理业务逻辑。同时,注意生命周期钩子的执行顺序并发执行情况,可以避免在实际开发中出现逻辑错误。


参考文章:

  • Vue.js

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/139878997

这篇关于【vue3|第13期】深入了解Vue3生命周期:管理组件的诞生、成长与消亡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086896

相关文章

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

vue+el国际化-东抄西鉴组合拳

vue-i18n 国际化参考 https://blog.csdn.net/zuorishu/article/details/81708585 说得比较详细。 另外做点补充,比如这里cn下的可以以项目模块加公共模块来细分。 import zhLocale from 'element-ui/lib/locale/lang/zh-CN' //引入element语言包const cn = {mess