vue钩子函数、生命周期

Vue.js的生命周期主要分为四个阶段:创建阶段、编译阶段、挂载阶段、更新与销毁阶段。每个阶段都有对应的生命周期钩子函数。

  1. 创建阶段:包含生命周期钩子:beforeCreate 和 created

    • beforeCreate: 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

    • created: 实例已经创建完成之后调用,但是挂载阶段还没开始,$el属性目前不可见。

  2. 编译阶段:这个阶段实际上在 beforeCreate 和 created 钩子之间进行,这个阶段负责把模板编译成虚拟DOM。

  3. 挂载阶段:包含生命周期钩子:beforeMountmounted

    • beforeMount: 在挂载开始之前被调用,相关的 render 函数首次被调用。

    • mounted: 实例挂载完成后调用,但需要注意 mounted 并不保证所有的子组件也都一起挂载完成,如果需要等到整个视图都渲染完毕,可以使用 vm.$nextTick

  4. 更新与销毁阶段:包含生命周期钩子:beforeUpdateupdatedbeforeDestroydestroyed

    • beforeUpdate: 数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。

    • updated: 实例更新完毕后调用,这个钩子在数据更改导致的虚拟DOM重新渲染和打补丁之后会被调用。

    • beforeDestroy: 实例销毁之前调用,主要用于解绑自定义的事件等。

    • destroyed: Vue实例销毁后调用,调用后,Vue实例的所有指令也将解绑,所有的事件监听器都被移除,所有的子实例也都被销毁。

理解Vue生命周期钩子函数的应用场景可以更好地运用到实际开发中,以下为钩子函数的一些常见应用举例:

 

1、beforeCreate & created:可以在这两个钩子函数中进行初始化的操作。例如,在created钩子函数中进行http请求获取数据,因为在这一步,Vue实例已经完成了数据的观测,所以数据变更会触发视图的更新。

   new Vue({data: { msg: "" },created() {axios.get("api/msg").then(response => {this.msg = response.data;});}});

 

2、beforeMount & mounted:挂载阶段,当需要操作DOM元素时,如使用第三方库(echarts等)生成图表,应该在mounted中进行,因为在这个阶段,模板已经在内存中编译完成,并挂载到了页面上。

 

   new Vue({mounted() {const chart = echarts.init(document.getElementById('myChart'))// ...设置图表optionchart.setOption(option)}});

 

3、beforeUpdate & updated:当需要在数据变化后执行一些特定的业务逻辑时,可以在这两个钩子中进行。例如,在更新前保存一份旧数据,在更新后和旧数据进行对比,如果变化较大,则提示用户。

 

   new Vue({data: { msg: '' },beforeUpdate() {this.oldMsg = this.msg;},updated() {if (this.msg !== this.oldMsg) {alert('数据有大变动');}}});

 

4、beforeDestroy & destroyed:在实例销毁前清理那些不会被自动清理的事件监听等,可以在beforeDestroy钩子函数中进行。多用于组件销毁前的善后工作,,比如清除定时器。

 

   new Vue({data: { intervalId: null },created() {this.intervalId = setInterval(() => {console.log('do something');}, 1000);},beforeDestroy() {clearInterval(this.intervalId);}});

 

 

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

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

相关文章

Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(2)vi discarding frame问题调试

基于上篇调试记录 Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(1)MIPI问题调试-CSDN博客 1.前言 当通过gstreamer持续捕获视频设备时,帧数会下降,并且I输入越高,丢失的帧数越多。 当达到4k30hz时,它完全无法使用,系统会在几秒钟的收集后崩溃并重新启动 4k30hz …

【C++】:类和对象(下)

目录 一,再谈构造函数1.初始化列表2. 隐式类型转换的过程及其优化3. 隐式类型转换的使用4. explcit关键字5. 单参数和多参数构造函数的隐式类型转换 二,static成员1.静态成员变量2.静态成员函数 三,友元3.1 友元函数3.2 友元类 四&#xff0c…

Ansys Speos|进行智能手机镜头杂散光分析

本例的目的是研究智能手机Camera系统的杂散光。杂散光是指光向相机传感器不需要的散光光或镜面光,是在光学设计中无意产生的,会降低相机系统的光学性能。 在本例中,光学透镜系统使用Ansys Zemax OpticStudio (ZOS)进行设计,并使用…

LangChain入门2 RAG详解

RAG概述 一个典型的RAG应用程序,它有两个主要组件: 索引:从源中获取数据并对其进行索引的管道。这通常在脱机情况下发生。检索和生成:在运行时接受用户查询,并从索引中检索相关数据,然后将其传递给模型。 从原始数据…

机器学习:深入解析SVM的核心概念【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂,所以导师直接推荐我阅读周志华的《西瓜书》!!然后仔细阅读其中的第六章:支持向量机 间隔与支持向量 **问题一:什么叫法向量?为什么是叫法向量**什么是法向量?…

关于PostgreSQL的20道面试题

1. 请解释PostgreSQL中的事务(Transaction)以及它的ACID属性。 PostgreSQL中的事务具有ACID属性,确保了数据库操作的可靠性和数据一致性。 以下是ACID各个属性的具体含义及举例说明: 原子性(Atomicity)&…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息,人工智能巨头OpenAI宣布,其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息,从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…

AJAX家政系统 自营+多商家(高级授权)+独立端口 -源码下载

应用介绍 后台:https://service.hnajax.com/hxeJVakAdf.php/index/login AJAX家政系统 自营多商家(高级授权)独立端口 基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端(高级授权)、门店端(高级授权)各端…

HTML:认识HTML及基本语法

目录 1. HTML介绍 2. 关于软件选择和安装 3. HTML的基本语法 1. HTML介绍 HyperText Markup Language 简称HTML,意为:超文本标记语言 超文本:是指页面内可以包含的图片,链接,声音,视频等内容 标记&am…

浅谈电能质量电网谐波

目录 浅谈电能质量电网谐波 1.什么是谐波? 2.谐波的产生原因?

76、堆-数据流的中位数

思路: 这个问题是动态数据流中位数查找问题。在数据流中,数据是逐个到来的,而我们需要在任何时候快速返回已有数据的中位数。中位数是将数据集分成两个等长的子集,一个包含所有较小的元素而另一个包含所有较大的元素。 为了高效解…

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated

错误描述 vue3-element-admin 项目将Vite4 升级至 Vite5 后,项目运行出现如下警告: The CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.图片 问题原因 Vite 官方弃用 C…

WIN10 anaconda 安装 CondaError: Run ‘conda init‘ before ‘conda activate‘

1 下载 https://www.anaconda.com/download/success 2 安装 3 修改环境变量 安装后修改环境变量 4 winrun 进入命令窗口 输入cmd 输入 conda info 5 创建 虚拟环境 conda create -n yolov8 python3.8 -y 6 CondaError: Run ‘conda init’ before ‘conda activate’ c…

C# 中 object.ReferenceEquals 方法

在 C# 中,object.ReferenceEquals 方法用于确定两个对象是否引用同一个内存地址。它是一个静态方法,可以通过 object.ReferenceEquals(obj1, obj2) 的方式调用。 以下是对 object.ReferenceEquals 的详细解释和示例说明: object.ReferenceEq…

在Primavera P6 中维护自定义活动栏

前言 自从 Henry Gantt 在 1910 年左右提出这个想法以来,以图形方式显示项目进度表并沿时间刻度显示条形图一直延续到当今最复杂和流行的项目进度系统中。在本文中,我们将仔细研究 Primavera P6 Professional 中的甘特图,并探索一些自定义其…

【新知实验室 - TRTC 实践】音视频互动 Demo、即时通信 IM 服务搭建

一、TRTC 初识 TRTC 是什么 TRTC(Tencent RTC)腾讯实时音视频,源自于 QQ 音视频团队,是基于 QQ 音视频多年来的音视频技术积累,位于腾讯云的 RTC 云服务。TRTC 支持腾讯会议、企业微信直播、微信视频号、腾讯云课堂、…

一个类实现Mybatis的SQL热更新

引言 平时用SpringBootMybatis开发项目,如果项目比较大启动时间很长的话,每次修改Mybatis在Xml中的SQL就需要重启一次。假设项目重启一次需要5分钟,那修改10次SQL就过去了一个小时,成本有点太高了。关键是每次修改完代码之后再重…

Android学习之路之数据存储(二)

目录 写在前面2. 共享参数:SharedPreferences2.1 SharedPreferences常用操作2.1.1 写操作2.1.2 读操作 3. 数据库:SQLite3.1 SQLite的基本用法3.1.1 SQLiteDatabase相关API 3.2 数据库帮助器SQLiteOpenHelper3.2.1 相关实例 写在前面 Android有五种主要…

写一个简单的程序

思路分析: 1. 导入必要的库 首先,确保你的项目中包含了AWT或Swing库,因为我们将使用它们来创建图形界面。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import j…

FineBI学习:K线图

效果图 底表结构:日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价 步骤: 横轴:日期 纵轴:开盘价、最低价 选择【自定义图表】,或【瀑布图】 新建字段:价差(收盘-开盘&#xf…