Vue生命周期:组件的生命之旅

🍃引言

在Vue.js中,每个组件都有其独特的生命周期。这个生命周期指的是组件从创建到销毁的一系列过程。了解并正确使用Vue的生命周期钩子,对于优化组件性能、管理组件状态以及实现特定功能至关重要。本文将详细介绍Vue的生命周期及其各个阶段的用法。

🍃生命周期阶段

Vue组件的生命周期可分为四个阶段:创建阶段、挂载阶段、更新阶段和销毁阶段。每个阶段都有对应的生命周期钩子,这些钩子函数允许我们在组件的不同时刻执行特定的操作。
在这里插入图片描述

🍁创建阶段

在创建阶段,Vue实例被初始化,包括数据属性、计算属性、方法以及侦听器等。这个阶段有两个主要的生命周期钩子:

🍂beforeCreate

在实例初始化之后,数据观测(data observer)和事件/侦听器事件尚未配置之前被调用。此时,无法访问到数据和DOM元素。

🍂created

在实例创建完成后被立即调用。在这一步,实例已完成数据观测,属性和方法的运算,以及事件监听器的配置。但是,挂载阶段尚未开始,$el属性目前不可见。

🍁挂载阶段

挂载阶段是组件与DOM建立关联的过程。此阶段有两个主要的生命周期钩子:

🍂beforeMount

在挂载开始之前被调用,相关的render函数首次被调用。此时,可以访问到数据和DOM元素,但组件尚未渲染成真实的DOM节点。

🍂mounted

el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。在这个阶段,可以访问到组件的DOM元素和数据,通常用于执行一些需要依赖DOM的操作,如获取元素宽高、设置动画等。

🍁更新阶段

当组件的数据发生变化时,Vue会进入更新阶段。此阶段包含两个主要的生命周期钩子:

🍂beforeUpdate

数据更新时调用,发生在虚拟DOM打补丁之前。此时可以访问到更新后的数据,但DOM元素尚未更新。

🍂updated

由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。此时可以访问到更新后的数据和DOM元素,通常用于执行一些需要依赖最新DOM的操作。

🍁销毁阶段

当组件不再需要时,Vue会进入销毁阶段。此阶段有一个主要的生命周期钩子:

🍂beforeDestroy

实例销毁之前调用。在这一步,实例仍然完全可用。通常用于执行一些清理操作,如取消定时器、移除事件监听器等。

🍂destroyed

Vue实例销毁后调用。调用后,所有的事件监听器会被移除,所有的子实例也都会被销毁。通常用于执行一些资源释放的操作。

🍃代码示例

<template>  
  <div>  
    <h1>{{ message }}</h1>  
    <button @click="updateMessage">更新消息</button>  
  </div>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      message: "Hello, Vue!"  
    };  
  },  
  beforeCreate() {  
    console.log("beforeCreate 钩子函数被调用");  
  },  
  created() {  
    console.log("created 钩子函数被调用");  
    // 可以在这里进行数据的请求和操作  
  },  
  beforeMount() {  
    console.log("beforeMount 钩子函数被调用");  
  },  
  mounted() {  
    console.log("mounted 钩子函数被调用");  
    // 可以在这里进行一些依赖于DOM的操作  
  },  
  beforeUpdate() {  
    console.log("beforeUpdate 钩子函数被调用");  
    // 可以在这里进一步地更改状态,这不会触发附加的重渲染过程  
  },  
  updated() {  
    console.log("updated 钩子函数被调用");  
    // 当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作  
  },  
  beforeDestroy() {  
    console.log("beforeDestroy 钩子函数被调用");  
    // 可以在这个钩子中进行一些清理工作,例如取消定时器和事件监听器等  
  },  
  destroyed() {  
    console.log("destroyed 钩子函数被调用");  
    // Vue 实例销毁后调用。调用后,所有的事件监听器会被移除,所有的子实例也都会被销毁。  
  },  
  methods: {  
    updateMessage() {  
      this.message = "更新后的消息";  
    }  
  }  
};  
</script>

这个示例中,我们创建了一个简单的Vue组件,其中包含一个h1标签和一个按钮。在组件的JavaScript部分,我们定义了各个生命周期钩子函数,并在其中打印了相应的日志信息。您可以根据需要在这些钩子函数中添加自己的代码逻辑。当您运行这个组件时,您将在控制台中看到各个钩子函数的调用顺序和日志输出。请注意,在created钩子函数中,我们提到可以在这里进行一些数据的请求和操作。在mounted钩子函数中,我们提到可以在这里进行一些依赖于DOM的操作。

🍃总结

了解并正确使用Vue的生命周期钩子,对于优化组件性能、管理组件状态以及实现特定功能至关重要。通过在不同的生命周期阶段执行适当的操作,我们可以确保组件在适当的时机进行渲染、更新和销毁,从而实现更高效、更健壮的Vue应用程序。在实际开发中,我们需要根据具体需求选择合适的生命周期钩子来实现相应的功能。


🏫博客主页:魔王-T

🥝大鹏一日同风起 扶摇直上九万里

❤️感谢大家点赞👍收藏⭐评论✍️


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】I/O多路转接技术

I/O多路转接技术 一、I/O多路转接之select1、select函数2、fd_set的相关内容3、如何在代码中高效的使用select函数4、select服务器5、select的优缺点6、select的适用场景 二、I/O多路转接之poll1、poll函数2、struct pollfd结构2、poll服务器3、poll的优缺点 三、I/O多路转接之…

在文本框中添加单位

<el-col :span"12"><el-form-item label"进度" prop"schedule":rules"[{required: true, message:进度不能为空, trigger:blur},{validator: validator.isFloatGteZero, trigger:blur}]"><el-input v-model"input…

vcruntime140_1.dll错误的解决方案,与vcruntime140_1.dll下载指南

vcruntime140_1.dll是Visual C redistributable 2015-2019的一部分&#xff0c;如同很多动态链接库&#xff08;dll&#xff09;文件&#xff0c;它落在系统级别可共享软件组件的范畴。用户可能会在安装或运行一些游戏或程序时遇到"vcruntime140_1.dll丢失"的问题。今…

【Docker】Swarm的ingress网络

Docker Swarm Ingress网络是Docker集群中的一种网络模式&#xff0c;它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务&#xff0c;并提供负载均衡和服务发现功能。 在Docker Swarm中&#xff0c;Ingress网络使…

基于OpenSSL和nginx搭建本地https服务器(详细实操版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

智慧安防三大信息技术:云计算、大数据及人工智能在视频监控EasyCVR中的应用

说到三大信息技术大家都很清楚&#xff0c;指的是云计算、大数据和人工智能&#xff0c;在人工智能&#xff08;AI&#xff09;快速发展的当下&#xff0c;例如常见的大数据分析、人工智能芯片生产的智能机器人等等&#xff0c;在工作、生活、教育、金融、科技、工业、农业、娱…

预览功能实现

需求&#xff1a;将后端返回来的文字或者图片和视频展示在页面上。 <!-- 预览 --><el-dialog title"预览" :visible.sync"dialogPreviewVisible" width"50%" append-to-body :close-on-click-modal"false" close"Previe…

【分享】centos7vim异常

问题描述: 虚拟机安装centos7&#xff0c;安装vim后异常&#xff0c;上下左右键会变成abcd,退格键无法删除。 系统版本: CentOS Linux release 7.5.1804 (Core) 原因: 暂时未知&#xff0c;有可能是vim安装时&#xff0c;一个组件未安装导致。后续追溯 解决方案: echo &quo…

国际上有哪些比较出名的VOIP供应商

1. Skype&#xff08;微软&#xff09;&#xff1a;企业发展历程&#xff1a;Skype 于2003年成立&#xff0c;最初由瑞典和丹麦的几位开发者创建。2005年被eBay收购&#xff0c;之后于2011年被微软收购。微软将 Skype 合并到其产品生态系统&#xff0c;并继续开发和改进该平…

Whisper

文章目录 使后感Paper Review个人觉得有趣的Log Mel spectrogram & STFT Trainingcross-attention输入cross-attention输出positional encoding数据 Decoding为什么可以有时间戳的信息 Test code 使后感 因为运用里需要考虑到时效和准确性&#xff0c;类似于YOLO&#xff…

库位角点检测之Centernet/CornerNet算法

1.CornerNet CornerNet 那么我们从bounding box左上角(top-left corner)看物体。视线横着的话&#xff0c;物体就在视线的下面&#xff08;那么视线所在位置为the topmost boundary of an object&#xff09;。视线竖着的话&#xff0c;物体就在视线的右边&#xff0c;那么视线…

Electron+Ts+Vue+Vite桌面应用系列:TypeScript常用语法详解

文章目录 1️⃣ TypeScript常用讲解1.1 使用1.2 字符串1.3 数字1.3 布尔1.4 数组1.5 元组1.6 枚举1.7 any1.8 void1.9 object1.10 函数指定返回值的类型1.11 联合类型1.12 类型断言1.13 接口1.14 函数类型1.15 类类型1.16 泛型 2️⃣ 类2.1 类的基本写法2.2 类的继承2.3 类的修…

建设银行RPA应用实践

当下&#xff0c;银行业正在从“互联网金融”时代向“新科技金融”时代迈进&#xff0c;在目前经济形势严峻、人力成本持续增加的经营背景下&#xff0c;以科技解放人力将是智能化银行发展的必然趋势。RPA技术为解决上述问题提供了崭新的路径。 RPA&#xff08;机器人流程自动…

vue3(三)-基础入门之v-model双向绑定、v-model修饰符

一、v-model 双向绑定 监听用户的输入事件来实时更新数据&#xff0c;多用于表单 input、textarea以及select元素上 <div id"app"><input type"text" v-model"myInputText" /><!-- 等价于&#xff1a; --><input type&qu…

【动态规划】LeetCode-63.不同路径II

&#x1f388;算法那些事专栏说明&#xff1a;这是一个记录刷题日常的专栏&#xff0c;每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目&#xff0c;在这立下Flag&#x1f6a9; &#x1f3e0;个人主页&#xff1a;Jammingpro &#x1f4d5;专栏链接&…

深度学习(一):Pytorch之YOLOv8目标检测

1.YOLOv8 2.模型详解 2.1模型结构设计 和YOLOv5对比&#xff1a; 主要的模块&#xff1a; ConvSPPFBottleneckConcatUpsampleC2f Backbone ----->Neck------>head Backdone 1.第一个卷积层的 kernel 从 6x6 变成了 3x3 2. 所有的 C3 模块换成 C2f&#xff0c;可以发现…

蓝桥杯算法心得——小郑躲太阳(思维推导)

大家好&#xff0c;我是晴天学长&#xff0c;一道与平时的题型截然不同的题型&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .小郑躲太阳 问题描述 小郑一觉醒来发现起晚啦!现在需要从家里飞速前往公司…

SD-WAN组网中的CPE及云服务CPE部署方法

什么是CPE&#xff1f; CPE全称为Customer Premises Equipment&#xff0c;即客户端设备&#xff0c;在SD-WAN中通常为路由器&#xff0c;部署在中心点和分支上&#xff0c;提供连接和路由、协议转换、流量监控等功能。一般可分为硬件CPE和虚拟化CPE&#xff08;virtual CPE&a…

解锁创新力:深度剖析知识付费系统源码及关键技术实现

在知识付费的浪潮中&#xff0c;构建一个稳健高效的系统源码是创新和成功的关键。本文将深入探讨知识付费系统的核心源码和一些关键技术实现&#xff0c;为开发者提供有力的指导和灵感。 1. 构建基础&#xff1a;系统框架 在知识付费系统中&#xff0c;系统框架的选择至关重…

编译原理:设计与实现一个简单词法分析器

设计与实现一个简单词法分析。具体内容是产生一个二元式文本文件&#xff0c;扩展名为dyd&#xff0c;可将Java或C程序(测试程序)分解成为一个一个的单词及类型。 &#xff08;选做&#xff1a;并查“单词符号与种别对照表”得出其种别&#xff0c;用一数字表示。&#xff09;…