Vue2 生命周期

news/2024/5/21 15:19:27/文章来源:https://www.cnblogs.com/brokyz/p/16750391.html

Vue 生命周期

概述

在使用 Vue 时,我们需要执行一些 JS 代码。比如我们需要在页面中添加一个定时器来固定间隔更新时间。这时我们可能会想到直接在,Vue 实例外书写 JS 代码。这种方法能完成操作,但是 Vue 并不建议这样写。Vue 建议尽量在 Vue 实例中完成所有的操作。这时我们就需要理解 Vue 的生命周期并使用 Vue 为我们提供的生命周期函数来完成。

Vue 生命周期指的就是从 Vue 实例创建,到 Vue 实例销毁这一整套流成。我们可以将其理解成 Vue 的一生

对应 Vue 生命周期的不同阶段,Vue 为我们提供了一些函数,可供我们在对应的生命周期阶段调用我们需要的代码,这些函数我们惩治为 Vue 生命周期函数,我们也可以将其称为钩子(hook)。

Vue 生命周期函数会随着 Vue 运行到不同阶段被 Vue 自动执行。

Vue 生命周期

下面的图片完成的介绍了 Vue 的一生。其中红色框的为 Vue 生命周期函数。蓝色框为解释说明。其余为 Vue 的一生。

Vue 生命周期函数

<body><div id="app"><button @click="number++">update data +1</button><br><p>data: {{number}}</p><button @click="destroy">destroy</button></div>
</body>
<script src="https://cdn.jsdelivr.net/gh/brokyz/brokyzCDN/vue/2.7.10/vue.js"></script>
<script>Vue.config.productionTip = falseconst vm = new Vue({data: {number: 0},methods: {destroy() {this.$destroy()}},beforeCreate() {console.log("beforeCreate");},created() {console.log("created");},beforeMount() {console.log("beforeMount");},mounted() {console.log("mounted");},beforeUpdate() {console.log("beforeUpdate");},updated() {console.log("updated");},beforeDestroy() {console.log("beforeDestroy");},destroyed() {console.log("destroyed");}}).$mount("#app")
</script>

钩子解读:

  1. beforeCreate:这里指的数据检测、数据代理创建之前。所以这里并不能访问到 vm 实例中的 data 数据和methods方法。注意,这并不是 Vue 实例 vm 创建之前,如果 Vue 实例都还没有创建,又哪里会有 Vue 生命周期函数呢?
  2. created:此时已经创建了数据检测和数据代理。这时可以访问到 vm 实例的数据、methods 方法
  3. beforeMount:此时虚拟 DOM 已经解析生成并存于内存中,但是还没有转换成页面中的真实 DOM 并插入页面,所以现在页面上展现的 DOM 还都是未经 Vue 编译的 DOM 结构。因此这里对 DOM 的操作最终都不会生效。因为不管怎么操作,都会一瞬间改变,之后 Vue 将虚拟 DOM 转换为真实 DOM 时插入页面后,之前的 DOM 操作会被覆盖掉。所以只是一瞬间生效,最终还会被覆盖掉失效。
  4. mounted(常用):此时内存中的虚拟 DOM 已经转换为真实 DOM 并插入页面。所以这时页面中呈现的时经过 Vue 编译的 DOM 结构。所以这时对 DOM 的操作都有效(尽量避免)。一般都会在此处设置定时器、发送网络请求、订阅消息、绑定自定义事件等初始化操作。
  5. beforeUpdate:此时数据已经发生变化,但是页面还没有进行更新。也就是这里的数据已经是新的了,但是页面还是旧页面。注意,如果只涉及数据变化,不涉及页面更新则不会触发页面更新流程。
  6. updated:此时页面已经完成更新。也就是说这时候数据是新数据,页面也是新页面。注意,如果只涉及数据变化,不涉及页面更新则不会触发页面更新流程。
  7. beforeDestroy(常用):此时 vm 中的 data、methods、指令等都处于可用状态,马上执行销毁过程。此时不会数据进行操作,因为即便操作了也不会更新页面了。一般在此阶段关闭定时器、取消订阅消息、解绑自定义事件等收尾操作
  8. destroyed:此时 vm 实例已经完全销毁,无法在借助 vm 实例对页面进行管理。

还有三个钩子在这里并没有展现

  1. nextTick(()=>{}),这个钩子在 vm 和 vc 身上,有时我们对组件进行操作时,真实dom还没有生成被渲染到页面上,但是我们又需要操作这个dom。这样我们就无法获取我们要操作的元素。这时我们可以写在 nextTick 身上。其中的代码会在页面渲染之后执行。
  2. activated(){},这个钩子在路由中存在,如果一页面进行缓存而非销毁时。那么再次进入这个页面就会触发 activated。
  3. deactivated(){},这个钩子在路由中存在,如果一页面进行缓存而非销毁时。那么离开这个页面就会触发 deactivated。

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

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

相关文章

Hadoop3.X安装教程(Ubuntu)

前提:一台纯净的Ubuntu机器(虚拟机安装教程略) ctrl + alt + T 打开bash,全程使用bash指令进行,以hadoop 和 java 8为例 首先换源进入root账户 sudo su -升级软件列表 apt-get update安装vim apt install vim中途询问直接输入Y确认下载hadoop和java 创建/data mkdir /data…

半导体中的缺陷和位错能级

点缺陷&#xff1a; 在一定的温度下&#xff0c;组成晶体的格点原子在平衡位置附近做振动&#xff0c;这些振动就会有强有弱&#xff0c;这样会使得一部分原子可以获得足够的能量&#xff0c;而挣脱周围电子对它的束缚&#xff0c;挤入间隙位置&#xff0c;这样的结果就形成了…

211西北大学,计算机、软件学硕和专硕专业课都变难了!

西北大学位于陕西省西安市&#xff0c;是一所211大学。西北大学计算机学科评估B-&#xff0c;软件工程学科评估B&#xff0c;计算机实力在211大学中处于中上游水平&#xff0c;还算不错。西北大学前段时间公布了23考研的招生目录&#xff0c;我们来看一下&#xff1a;西北大学2…

Unity的UI框架

UI框架 UI框架的含义 含义&#xff1a;UI框架用于管理场景中所有的面板&#xff0c;负责控制面板之间的跳转 UI框架的意义 1、随着游戏系统的复杂化&#xff0c;UI控件越来越多&#xff0c;各个UI之间的直接通讯&#xff0c;已经UI与GameObject之间的关系会越来越复杂 2、代…

盘点一个Python自动化办公的实战案例

点击上方“Python共享之家”&#xff0c;进行关注回复“资源”即可获赠Python学习资料今日鸡汤岭猿同旦暮&#xff0c;江柳共风烟。大家好&#xff0c;我是皮皮。 一、前言前几天在Python钻石交流群【Hxy任我肥】问了一个Python自动化办公的问题&#xff0c;提问截图如下&am…

基于Vue+SSM+SpringCloudAlibaba的英雄管理系统

需求 前端技术&#xff1a;element-ui、vue后端技术&#xff1a;spring boot、spring cloud、mybatis plus、jwt项目要求&#xff1a; 前端&#xff1a;exam-war-fore-1217后端&#xff1a;exam-war-parent-1217端口要求&#xff1a; 注册中心&#xff1a;10086、10087 &#x…

福特、微软、槟榔-《软件方法》自测题解析019

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 《软件方法》第2章自测题2 1 [单选题] 1999年11月的《财富》杂志题为“20世纪企业家”的文章&#xff0c;评选出了最能代表20世纪企业家精神的企业家─福特汽车的Henry F…

云原生|kubernetes|ingress-nginx插件部署以及简单的应用

前言&#xff1a; ingress直译&#xff1a;进口&#xff1b;入口&#xff1b;初切&#xff1b;进入&#xff1b;进入资格&#xff1b;进入权。在kubernetes中&#xff0c;它指的是网络入口。 ingress概述&#xff1a; 通俗来讲&#xff0c;Ingress和之前提到的Service、Depl…

Redis面试汇总笔记

在两个月前的学习中&#xff0c;我看过一个redis相关的讲解视频&#xff0c;是一个叫诸葛的老师&#xff0c;其中分为几层进行讲述&#xff0c;分别是数据类型、分布式锁、redis常见问题等。当时有记录一些内容&#xff0c;下面将按照顺序进行分享。 &#xff08;一&#xff0…

Cherno的Cpp教程笔记002:C++是如何工作的

include需要找到一个叫iostream的文件&#xff0c;然后将内容拷贝到当前的文件中来 main函数是程序的入口&#xff0c;main中调用了std::cout , main函数不一定需要返回值&#xff0c;当没有返回值时默认返回0 #include是预处理语句&#xff0c;编译器优先处理这些语句&#…

橘子学Mybatis03之代理模式

一、什么是代理模式&#xff0c;为啥需要代理模式 1、问题 在JAVAEE的MVC分层开发中&#xff0c;哪个层级对我们来说最重要&#xff1f; DAO ------> Service --------> ControllerJAVAEE分层开发中&#xff0c;最为重要的是Service层。这个也可以理解&#xff0c;因为S…

Lesson 8 The best and the worst 最好的和最差的

1.原文 2. 参考译文 3. New words and expressions ★competition n. 比赛&#xff0c;竞赛(暗地里的竞争) race n. 比赛&#xff0c;竞赛 car racematch n. 比赛 football matchcontest n. 比赛(更广泛)baby contest 宝宝大赛&#xff1b;beauty contest 选美game : 游戏, 运…

Spring自学日志01-IOC(控制翻转)

目录一、IOC的基本概念和底层原理1.1、什么是IOC?1.1.1、Spring IOC容器1.2、IOC底层原理1.2.1、IOC容器1.2.2、IOC容器装配Bean的方式1.2.3、IOC容器装配Bean的操作1.2.3.1、基于XML1.2.3.2、基于注解1.2.4、IOC容器装配Bean的作用域 一、IOC的基本概念和底层原理 1.1、什么是…

MySQL:索引特性

索引 0. 预备知识 索引是一个“物美价廉”的特性&#xff0c;用来提高数据库的性能。不需要改程序、调SQL、只需要正确的创建索引&#xff0c;查询速度就能提高成百上千倍&#xff0c;但查询速度的提升也带来了插入、更新、删除速度的下降。 0.1 认识磁盘 MySQL对数据进行增…

大数据讲课笔记2.1 初探大数据

文章目录零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;什么是大数据&#xff08;二&#xff09;大数据的特征1、数据体量大2、数据类型多3、处理速度快4、价值密度低&#xff08;三&#xff09;研究大数据的意义&#xff08;四&#xff09;拥抱大数据时代1、…

【数据结构初阶】第四话 —— 动态栈的基本操作

文章目录什么是栈栈的结构1. 初始化栈2. 入栈3. 出栈4. 获取栈顶元素5. 获取栈中有效元素个数6. 检测栈是否为空7. 销毁栈8. 总结接口函数贴图什么是栈 假如有⼀个⼜细⼜⻓的圆筒&#xff0c;圆筒⼀端封闭&#xff0c;另⼀端开⼝。往圆筒⾥放⼊乒乓球&#xff0c;先放⼊的靠近…

U盘插入自动读写/U盘插入自动复制/pythhttps://www.cnblogs.com/wawawa888/p/16749476.htmlon检测U盘的插入,以及进行自动复制文件并写入文件

U盘自动读写的小玩意 共有四种方法(我知道的方法,全是转载。转载也很不易,可望给个硬币) 方法一(vbs方法 全自动,转载自bilibili 点我跳转)文件下载链接(点我下载) 方法二(cmd方法 需手动,转载自bilibili 点我跳转)文件下载链接(点我下载) 方法三(python方法 全…

在DataFrame中根据索引值进行排序:sort_index()函数

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 在DataFrame中根据索引值进行排序&#xff1a; sort_index()函数 [太阳]选择题 对以下python代码表述有误的选项是&#xff1f; import numpy as np import pandas as pd data np.random.…

ElasticSearch_03_批量处理命令mget和bulk的使用

系列文章目录 文章目录系列文章目录前言一、批量处理命令mget方案1&#xff1a;body请求体中指定index和type方案2&#xff1a;url中指定index和type&#xff0c;body中仅指定ids方案2扩展&#xff1a;url中指定index和type&#xff0c;body中仅指定id数组二、基于bulk的增删改…

C++开发坦克大战--补充(加入传送门)--附完整代码

目录 素材整理 穿越草地 坦克穿越草地 子弹穿越草地 传送门 判定形式 生成传送门 传送坦克 关卡模式 效果展示 ​总结 完整代码 上一篇坦克大战居然意外获得了一些关注&#xff0c;正好最近也完善了一些功能&#xff0c;同时也加入了一些自己想到的新元素&#xff0c;主要是…