【vue2第七章】vue的四个生命周期与八个钩子函数

news2024/11/20 14:24:41

vue的四个生命周期与八个钩子函数

Vue的四个生命周期有:创建(creation)、挂载(mounting)、更新(updating)和销毁(destroying)。

钩子函数是什么:
vue生命周期过程中,会自动运行一些函数,被称为生命周期钩子函数,让开发者可以在特定的周期调用自己的代码。

创建生命周期:Vue实例被创建时,会执行一些初始化的工作,例如数据的观测、事件的回调等。此生命周期中的钩子函数有:

钩子函数名触发事件
beforeCreate在实例创建之前调用,此时尚未初始化data和methods。
created在实例创建之后调用,此时已经完成了data和methods的初始化。

挂载生命周期:挂载是将Vue实例与DOM关联的过程,即将Vue实例的模板渲染成最终的HTML,并且插入到页面中。此生命周期中的钩子函数有:

钩子函数名触发事件
beforeMount在挂载开始之前调用,此时尚未生成对应的DOM节点。
mounted在挂载完成之后调用,此时已经生成对应的DOM节点。

更新生命周期:当Vue实例的数据发生改变时,会触发更新生命周期。在此生命周期中,Vue会重新渲染并更新DOM。此生命周期中的钩子函数有:

钩子函数名触发事件
beforeUpdate在更新开始之前调用,此时尚未重新渲染和更新DOM。
updated在更新完成之后调用,此时已经重新渲染和更新DOM。

销毁生命周期:当Vue实例被销毁时,会执行一些清理工作,例如取消事件订阅、解绑DOM等。此生命周期中的钩子函数有:

钩子函数名触发事件
beforeDestroy在销毁开始之前调用,此时Vue实例仍然完全可用。
destroyed在销毁完成之后调用,此时Vue实例已经被销毁,无法再访问其属性和方法。

流程图展示:
在这里插入图片描述
代码演示:

<body>
    <div id="box">
        <button @click="num--">-</button>
        <div id="num" style="display: inline-block;">{{ num }}</div>
        <button @click="num++">+</button>
    </div>
    <script src="js/vue.js"></script>
    <script>
    const app = new Vue({
        el:"#box",
        data:{
            num:0
        },
        beforeCreate(){
            console.log("beforeCreate时的num数据",num)
        },
        created(){
            console.log("created时的num数据",num)
        },
        beforeMount(){
            console.log("beforeMount时的num的dom",document.getElementById("num").innerHTML)
        },
        mounted(){
            console.log("mounted时的num的dom",document.getElementById("num").innerHTML)
        },
        beforeUpdate(){
            console.log("beforeUpdate时的num的dom",document.getElementById("num").innerHTML)
        },
        updated(){
            console.log("updated时的num的dom",document.getElementById("num").innerHTML)
        },
        beforeDestroy(){
            //销毁时主要处理一些清楚定时器,定时任务什么打,减缓浏览器压力
        },
        destroyed(){

        }
    })    
    </script>
</body>

代码效果展示:
在这里插入图片描述
可以看到再beforecreated时 数据时undefined
在create的时候数据就初始化好了,
在beforemount时 num还是字符串没有被渲染好
在mount时, num就已经渲染好了
在我点击按钮时,beforeUpdate时 dom还是0
当页面更新完之后,Update时 就是1

在这里插入图片描述
当我在浏览器控制台使用 app.$destroy()就会销毁vue实列,触发 beforeDestroy 和 destroyed ,
并且页面刚刚所写的任何功能都不能用了,因为我们已经把vue实列销毁了.

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

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

相关文章

React动态添加标签组件

背景 在前端开发的过程中,一些表单的输入经常需要输入多个内容,如果采用一个输入框逗号分隔的方式,展示起来不是很清晰,一般需要采用标签的方式 需求 可以指定空状态时的标题设置标签颜色每个标签的最大长度(字符数)接口传递的时候的分隔标记(是用逗号,还是其他)直接处理表单,不…

基于OpenCV+Keras+tensorflow 实现的变电站作业管控平台源代码。含人脸识别考勤,移动目标跟踪,越线检测,安全措施检测,姿态识别等功能

#综述 使用该作业现场安全生产智能管控平台来实现变电站的安全生产的智能化管理&#xff0c;通过人脸识别功能进行人员的考勤&#xff1b; 通过人员、车辆的检测和识别来实现变电站的智能化管理&#xff1b;通过安全行为识别和安全区域报警功能来实现对变电站内人员和设备安全的…

线程同步与互斥

目录 前言&#xff1a;基于多线程不安全并行抢票 一、线程互斥锁 mutex 1.1 加锁解锁处理多线程并发 1.2 如何看待锁 1.3 如何理解加锁解锁的本质 1.4 CRAII方格设计封装锁 前言&#xff1a;基于线程安全的不合理竞争资源 二、线程同步 1.1 线程同步处理抢票 1.2 如何…

分库分表相关知识

文章目录 一、为什么要分库分表1.1 什么是分库1.2 什么是分表1.3 为什么要分库1.3.1 磁盘存储1.3.2 并发连接支撑 1.4 为什么要分表 二、分库分表解决方案2.1 垂直&#xff08;纵向&#xff09;切分2.1.1 垂直切分优点2.1.2 垂直切分缺点 2.2 水平&#xff08;横向&#xff09;…

video 视频编解码一些debug方法

文章目录 一、通过命令去获取一些数据1.2 确定我们xml配置文件: 二、查看我们芯片支持的编码能力三、通过log去获取信息 这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有 一、通过命令去获取一些数据 获取媒体相关的参数&#xff1a; # getprop |…

失效的访问控制

文章目录 渗透测试漏洞原理失效的访问控制1. 失效的访问控制1.1 OWASP TOP 101.1.1 A5:2017-Broken Access Control1.1.2 A01:2021-Broken Access Control 1.2 失效的访问控制类别1.2.1 水平越权1.2.2 垂直越权 1.3 攻防案例1.3.1 DVWA越权 1.4 相关漏洞1.4.1 目录遍历1.4.2 未…

泥石流山体滑坡监控视觉识别检测算法

泥石流山体滑坡监控视觉识别检测算法通过yolov8python深度学习框架模型&#xff0c;泥石流山体滑坡监控视觉识别检测算法识别到泥石流及山体滑坡灾害事件的发生&#xff0c;算法会立即进行图像抓拍&#xff0c;并及时进行预警。Yolo的源码是用C实现的&#xff0c;但是好在Githu…

解决Echarts中双坐标轴分割错位问题

1、处理函数 /*** Description 刻度最大值* date 2023-08-30* param {any} isNaN(maxValue/1* returns {any}*/ export const getYAxisMax (maxValue): number > {if (isNaN(maxValue / 1) || maxValue / 1 < 10) {return 10;}const max: any Math.ceil(maxValue) ;c…

Vue框架--Vue中el和data的两种写法

data与el的2种写法 1.el有2种写法 (1).new Vue时候配置el属性。 (2).先创建Vue实例&#xff0c;随后再通过vm.$mount(#root)指定el的值。 2.data有2种写法 (1).对象式 (2).函数式 如何选择&#xff1a;目前哪种写法都可以&#xff0c;以后学习到组件时&#xff…

Redis-Cluster集群操作--添加节点

一、环境部署 部署好Redis-Cluster集群&#xff0c;参考上个本人的博客&#xff1a;Redis-Cluster集群的部署&#xff08;详细步骤&#xff09;_是胡也是福的博客-CSDN博客 新准备一台机器&#xff0c;修改主机名&#xff0c;关闭防火墙和selinux&#xff0c;参考&#xff1a…

stm32 iap sd卡升级

参考&#xff1a;STM32F4 IAP 跳转 APP问题_stm32程序跳转_古城码农的博客-CSDN博客 app程序改两个位置 1.程序首地址&#xff1a; 2.改中断向量表位移&#xff0c;偏移量和上面一样就可以 然后编译成bin文件就可以了

云原生Kubernetes:二进制部署K8S单Master架构(二)

目录 一、理论 1.K8S单Master架构 2.部署 master 组件 3.部署 Woker Node 组件 4.在master1节点上操作 5.在 node01 节点上操作 6.在 master01 节点上操作 7.在 node01 节点上操作 8.node02 节点部署&#xff08;方法一&#xff09; 二、实验 1.环境 2.部署 master …

使用Python对数据的操作转换

1、列表加值转字典 在Python中&#xff0c;将列表的值转换为字典的键可以使用以下代码&#xff1a; myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出&#xff1a; {name: None, age: None, loca…

10. 微积分 - 微分链式法则

文章目录 微分链式法则Hi, 大家好。我是茶桁。 我们上节课讲了导数,并且在最后预告了今天的内容。今天将会是两部分,一部分是「微分」,一部分是「链式法则」。 微分 微分,我们在导论里面提过。它和导数比较像,但是还是有差别的。实际的定义和内容都比较简单,我们先来看…

【数据结构——树】二叉树的遍历(前序、中序、后序、层序)迭代+递归

文章目录 二叉树的定义二叉树的遍历方式前序遍历递归DFS迭代&#xff08;栈&#xff09; 中序遍历递归DFS迭代&#xff08;栈&#xff09; 后序遍历递归DFS迭代&#xff08;栈&#xff09; 层序遍历迭代&#xff08;队列&#xff09; 二叉树的定义 二叉树是一种常见的树状数据…

MySQL表的增删查改以及基本查询样例

文章目录 表的增删查改创建表插入单行全列数据插入多行指定列数据插入失败则更新替换 select全列查询指定列查询查询字段为表达式为查询结果指定别名查询结果去重 where数学小于60的英语在70到100之间的名字为王开头的总分在 200 分以下的语文成绩 > 80 并且不姓王的 结果排…

IDEA设置文件编码

IDEA设置文件编码 File->Settings->Editor->File Encodings 均设置为utf-8 新项目 设置 文件编码 点击New Projects Setup 再点击Settings for New Projects File->Settings->Editor->File Encodings 均设置为utf-8

Spring-TX 事务

目录 一、事务的种类 二、Spring事务管理器 三、事务注解使用 四、事务注解属性 一、事务的种类 1.编程式事务 所谓编程式事务就是用代码手写事务&#xff0c;包含了事务的开始&#xff0c;具体事务&#xff0c;事务的提交和事务的回滚。在这期间就会产生一些冗余问题&am…

Redis 7 第六讲 主从模式(replica)

🌹🌹🌹 此篇开始进入高级篇范围(❤艸`❤) 理论 即主从复制,master以写为主,Slave以读为主。当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。 使用场景 读写分离 容灾备份数据备份水平扩容主从架构 演示案例 注:masterauth、replicaof主…

pytorch如何使用Focal Loss

Focal loss 是 文章 Focal Loss for Dense Object Detection 中提出对简单样本的进行decay的一种损失函数。是对标准的Cross Entropy Loss 的一种改进。 FL对于简单样本&#xff08;p比较大&#xff09;回应较小的loss。 如论文中的图1&#xff0c; 在p0.6时&#xff0c; 标准的…