当前位置: 首页 > news >正文

引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue

目录

一、引出生命周期

二、生命周期_挂载流程

三、生命周期_更新流程

四、生命周期_销毁流程

五、生命周期_总结

一、引出生命周期

生命周期:

    1.又名:生命周期回调函数、生命周期函数、生命周期钩子。

    2.是什么:Vue在关键时刻帮我们调用的一些特殊名称的函数

    3.生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的。

    4.生命周期函数中的this 指向vm组件实例对象

Vue完成模板的解析并把初始的真实的DOM元素放入页面后(挂载完毕)调用mounted

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>document</title><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>	
</head>
<body>	<div id="root"><h2 v-if="a">你好啊</h2><!-- {opacity}为{opacity: opacity}的简写形式,第一个opacity为属性,第二个为属性值 --><h2 :style="{opacity}">欢迎学习Vue</h2><!-- {{change()}} --></div><script type="text/javascript">	Vue.config.productionTip = falseconst vm = new Vue({el:'#root',data:{opacity:1,a:false,},methods:{/* change(){setInterval(()=>{this.opacity -= 0.01if(this.opacity <= 0) this.opacity = 1},16)}, */},// Vue完成模板的解析并把初始的真实的DOM元素放入页面后(挂载完毕)调用mountedmounted() {console.log('mounted',this);//此处的this是vue实例setInterval(()=>{vm.opacity -= 0.01if(vm.opacity <= 0) vm.opacity = 1},16)},			})// 通过外部的定时器实现(不推荐)/* setInterval(()=>{vm.opacity -= 0.01if(vm.opacity <= 0) vm.opacity = 1},16) */</script>
</body>
</html>

二、生命周期_挂载流程

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script></head>
<body><!-- 准备好一个容器 --><div id="root"><h2 v-if="false">你好啊</h2><h2 :style="{opacity}">欢迎学习 Vue</h2><h2>当前的n值是:{{n}}</h2><button @click="add">点我 n+1</button></div><script type="text/javascript">const vm = new Vue({el: '#root',// template: ` //     <div>//         <h2>当前的n值是:{{n}}</h2>//         <button @click="add">点我 n+1</button>//     </div>// `,data: {opacity:1,n: 1},methods: {add(){this.n++}},beforeCreate() {console.log('beforeCreate')// console.log(this);// debugger},created() {console.log('created')// console.log(this);// debugger},beforeMount() {console.log('beforeMount')// console.log(this);// debugger               },mounted(){console.log('mounted')// console.log(this);// debugger   /* setInterval(() => {this.opacity -= 0.01if (this.opacity < 0) {this.opacity = 1}}, 16) */}})    </script>
</body>
</html>

三、生命周期_更新流程

在哪个生命周期 钩子中页面与数据尚未不同步: beforeUpdate

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script></head>
<body><!-- 准备好一个容器 --><div id="root"><h2 v-if="false">你好啊</h2><h2 :style="{opacity}">欢迎学习 Vue</h2><h2>当前的n值是:{{n}}</h2><button @click="add">点我 n+1</button></div><script type="text/javascript">const vm = new Vue({el: '#root',// template: ` //     <div>//         <h2>当前的n值是:{{n}}</h2>//         <button @click="add">点我 n+1</button>//     </div>// `,data: {opacity:1,n: 1},methods: {add(){this.n++}},beforeCreate() {console.log('beforeCreate')// console.log(this);// debugger},created() {console.log('created')// console.log(this);// debugger},beforeMount() {console.log('beforeMount')// console.log(this);// debugger               },mounted(){console.log('mounted',this.$el,this.$el instanceof HTMLElement)// console.log(this);// debugger   /* setInterval(() => {this.opacity -= 0.01if (this.opacity < 0) {this.opacity = 1}}, 16) */},beforeUpdate() {console.log('beforeUpdate')// console.log(this.n);  //点击按钮 此时已变成 2// debugger},updated() {console.log('updated')debugger},})    </script>
</body>
</html>

四、生命周期_销毁流程

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script></head>
<body><!-- 准备好一个容器 --><div id="root"><h2 v-if="false">你好啊</h2><h2 :style="{opacity}">欢迎学习 Vue</h2><h2>当前的n值是:{{n}}</h2><button @click="add">点我 n+1</button><button @click="bye">点我销毁vm</button></div><script type="text/javascript">const vm = new Vue({el: '#root',// template: ` //     <div>//         <h2>当前的n值是:{{n}}</h2>//         <button @click="add">点我 n+1</button>//     </div>// `,data: {opacity:1,n: 1},methods: {add(){console.log('add');this.n++},bye(){console.log('bye');this.$destroy()}},beforeCreate() {console.log('beforeCreate')// console.log(this);// debugger},created() {console.log('created')// console.log(this);// debugger},beforeMount() {console.log('beforeMount')// console.log(this);// debugger               },mounted(){console.log('mounted',this.$el,this.$el instanceof HTMLElement)// console.log(this);// debugger   /* setInterval(() => {this.opacity -= 0.01if (this.opacity < 0) {this.opacity = 1}}, 16) */},beforeUpdate() {console.log('beforeUpdate')// console.log(this.n);  //点击按钮 此时已变成 2// debugger},updated() {console.log('updated')// debugger},beforeDestroy() {console.log('beforeDestroy')console.log(this.n)this.add()  //仍可使用 add,但对数据触发的操作不再更新,所以页面中 的n不会改变},destroyed() {console.log('destroyed')},})         </script>
</body>
</html>

五、生命周期_总结

上面一共讲了8 个生命周期,也就是4 对生命周期

beforeCreate 与 created  指数据检测与数据代理创建之前和之后

beforeMount 与 Mounted  

beforeUpdate 与 updated

beforeDestroy 与 destroy 

常用的生命周期钩子:
     1.mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。
     2.beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。

 关于销毁Vue实例
     1.  销毁后借助Vue开发者工具看不到任何信息。
     2.  销毁后自定义事件会失效,但原生DOM事件依然有效。

     3.  一般不会在beforeDestroy 操作数据,因为即便操作数据,也不会再触发更新流程了。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./js/vue.js"></script></head>
<body><!-- 准备好一个容器 --><div id="root"><!-- 需求:点击按钮停止变换 --><h2 :style="{opacity}">欢迎学习 Vue</h2><button @click="opacity = 1">透明度设置为1</button><button @click="stop">停止变换</button></div><script type="text/javascript">const vm = new Vue({el: '#root',data: {opacity:1,},methods: {stop(){this.$destroy()}},mounted(){  this.timer = setInterval(() => {this.opacity -= 0.01console.log('定时器');if (this.opacity < 0) {this.opacity = 1}}, 16)},beforeDestroy() {console.log();clearInterval(this.timer)},           })         </script>
</body>
</html>

相关文章:

引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue

目录 一、引出生命周期 二、生命周期_挂载流程 三、生命周期_更新流程 四、生命周期_销毁流程 五、生命周期_总结 一、引出生命周期 生命周期&#xff1a; 1.又名&#xff1a;生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么&#xff1a;Vue在关键时刻帮我们调…...

C++ STL学习之【vector的使用】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 The power of imagination makes us infinite. 想象力的力量使我们无限。 文章目录&#x1f4d8;前言&#x1f4d8;正文1、默认成员函数1.1、默认构造…...

方差分析与单因素方差分析

研究分类型自变量对数值型因变量的影响。检验统计的设定和检验方法与变量间的方差是否相等有关。 例如研究行业、服务等级对投诉数的影响&#xff1a;如表格中给出4个行业、每个行业有3个服务等级、样本容量为7、观测值为投诉数。则构成一个3维的矩阵。 在上述基础上&#xf…...

分布式链路追踪组件skywalking介绍

SkyWalking组件概念 一个开源的可观测平台, 用于从服务和云原生基础设施收集, 分析, 聚合及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统, 甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统…...

SUBMIT的用法

SUBMIT的用法 一、简介 系统MB52/MB51/MB5B等类似的报表 &#xff0c;虽然数据很全面&#xff0c;执行效率也够快&#xff0c;但是经常会不满足用户需求&#xff08;增添字段、添加查询条件等&#xff09;&#xff0c;很多ABAP 会选择去COPY出标准程序&#xff0c;然后去做修改…...

网页基本标签、图像标签、链接标签、块内元素和块元素、列表标签、表格标签

一、网页基本标签 标题标签 段落标签 未写段落标签前&#xff0c;文本没有按照想要的格式排列显示 写段落标签后&#xff1a; 每句都是一段&#xff0c;所以句与句距离比较宽 换行标签 同一段&#xff0c;只是把文字换行&#xff0c;所以比较紧凑 水平线标签 字体样式标签 …...

RxJava操作符变换过程

要使用Rxjava首先要导入两个包&#xff0c;其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0我们在使用rxjava的操作符时都觉得很方便&#xff0c;但是rxjava是怎么实现操作符的转换呢&#xff0…...

开放平台订单接口

custom-自定义API操作 ​ ​​注册开通​​ taobao.custom 公共参数 名称 类型 必须 描述 key String 是 调用key&#xff08;必须以GET方式拼接在URL中&#xff09; secret String 是 调用密钥 api_name String 是 API接口名称&#xff08;包括在请求地址中&a…...

CDN相关知识点

1、什么是CDN&#xff1f;CDN的作用是什么&#xff1f; CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一种通过在多个节点上分布内容以提高网络性能、可靠性和可扩展性的网络解决方案。CDN通过在不同的地理位置部署服务器&#xff0c;使用户…...

【论文阅读】注意力机制与二维 TSP 问题

前置知识 注意力机制 见 这篇 二维 TSP 问题 给定二维平面上 nnn 个点的坐标 S{xi}i1nS\{x_i\}_{i1}^nS{xi​}i1n​&#xff0c;其中 xi∈[0,1]2x_i\in [0,1]^2xi​∈[0,1]2&#xff0c;要找到一个 1∼n1\sim n1∼n 的排列 π\piπ &#xff0c;使得目标函数 L(π∣s)∥xπ…...

[深入理解SSD系列 闪存实战2.1.7] NAND FLASH基本编程(写)操作及原理_NAND FLASH Program Operation 源码实现

前言 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义, 下面先来个热身: 问1. 原理图上NAND FLASH只有数据线,怎么传输地址? 答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从N...

PMP项目管理项目资源管理

目录1 项目资源管理概述2 规划资源管理3 估算活动资源4 获取资源5 建设团队6 管理团队7 控制资源1 项目资源管理概述 项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程&#xff0c;这些过程有助于确保项目经理和项目团队在正确的时间和地点使用正确的资源。…...

程序的编译和链接

程序的编译和链接程序的编译和链接程序的两种环境翻译环境详解编译和链接预处理编译汇编链接运行环境程序的编译和链接 程序的两种环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 …...

Win11的两个实用技巧系列之无法联网怎么办、耳机没声音的多种解决办法

Win11无法联网怎么办? win11安装后设备不能上网的解决办法Win11无法联网怎么办&#xff1f;电脑安装win11系统以后&#xff0c;发现不能上网&#xff0c;连接不上网络&#xff0c;该怎么办呢&#xff1f;下面我们就来看看win11安装后设备不能上网的解决办法Win11安装后&#x…...

【微信小程序】-- 自定义组件 - 数据监听器 - 案例 (三十五)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

Linux - 第7节 - 进程间通信

1.进程间通信介绍 进程间通信目的&#xff1a; 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 。​​​​​​​ 资源共享&#xff1a;多个进程之间共享同样的资源。 ​​​​​​​ 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通…...

# 数据完整性算法在shell及python中的实践

数据完整性算法在shell及python中的实践 文章目录数据完整性算法在shell及python中的实践1 预备知识1.1 摘要算法1.2 报文&#xff08;数据&#xff09;完整性校验1.3 python byte类型字符串与普通字符串区别2 传统方法&#xff08;散列函数&#xff09;2.1 在shell中实践2.2 在…...

QEMU启动x86-Linux内核

目录QEMU简介linux启动流程我的环境安装QEMU软件包安装源码安装编译linux内核编译busybox制作initramfs使用QEMU启动linux内核简化命令参考QEMU简介 QEMU&#xff08;quick emulator&#xff09;是一个通用的、开源的硬件模拟器&#xff0c;可以模拟不同硬件架构&#xff08;如…...

C/C++每日一练(20230311)

目录 1. 计算阶乘的和 ★ 2. 基本计算器 ★★★ 3. N皇后 II ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 计算阶乘的和 计算&#xff1a;1!-2!3!-4!5!-6!7!-8!9!-10!&#xff0c;并输出计算结果。 注意&#xff1a;不全是…...

哪个牌子的洗地机耐用?耐用的洗地机推荐

作为当下非常热销的洗地机&#xff0c;它不仅解放了双手&#xff0c;使用也非常的便捷。是生活品质提高的最好代表&#xff0c;但是面对市面上让人眼花缭乱的洗地机&#xff0c;挑选几个来回都决定不了到底入手哪个好&#xff01;为了能帮助大家选购到合适的洗地机&#xff0c;…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...