深度解读生命周期函数

news2024/11/25 0:51:51

目录

    • 前言
    • 什么是生命周期?
    • 生命周期的流程
      • 创建组件
      • 初始化事件和生命周期
      • 初始化组件
      • 判断渲染结构的数据与模板
      • 生成HTML结构
      • 渲染HTML结构
      • 数据更新
      • 初步销毁组件
      • 销毁组件
    • 生命周期函数
      • beforeCreate
      • created
      • beforeMount
      • mounted
      • beforeUpdate
      • updated
      • beforeDestroy
      • destroyed


前言

接触Vue不知不觉已经有很长一段时间了,对于生命周期函数也有了更加深刻的理解,对于在什么时候用在什么地方用如何使用也有了一定的理解,这里就和大家分享一下自己对生命周期的理解。

什么是生命周期?

简单的来说就是在vue中所有的组件都具有一个生命的周期,从组件的创建到组件的销毁会经历很多的阶段,每一个阶段的任务都不一样,触发的时机也不一样,这就要求我们必须深刻的理解生命周期才能更好的去使用,生命周期函数使用的好可以在开发中事半功倍。
接下来我会先从官网文档的角度进行分析,包含生命周期的流程,在每一个阶段内vue内部做了什么,生命周期函数的详解以及各个阶段适合进行的操作。


这里我们先看看官方文档对于生命周期的描述:

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。

在这里插入图片描述

生命周期的流程

创建组件

创建组件new Vue,在初始化newVue中,Vue会将各种组件进行初始化
在这里插入图片描述
这部分内容就先不展开说明了,后续在专门写一篇文章进行详细讲解。

初始化事件和生命周期

Init Events & Lifecycle在这个阶段事件和生命周期都会被初始化,而组件如prop、data、methods都还没被创建所以都处于不可用状态

在这里插入图片描述
在这里插入图片描述

这里就可以清晰的可以看到beforeCreate输出的this.IDundefined

初始化组件

初始化组件Init injections & reactivity

在这个阶段中会把所有的组件进行初始化

在这里插入图片描述

在这个阶段的组件将会被创建好处于可用的状态,但是组件的模板结构还是处于未生成状态。

在这里插入图片描述
在这里插入图片描述

这里就可以清晰看出来data中的数据是可以获取的了,但是DOM结构还未被创建所以无法获取。

判断渲染结构的数据与模板

在这个阶段会判断是否存在el,没有则会调用 m o u n t ( e l ) 方法( mount(el)方法( mount(el)方法(mount方法是用来挂载我们的扩展的),存在则会继续检查template
此时已经可以获取到DOM的信息了

在这里插入图片描述
在这里插入图片描述

生成HTML结构

这个阶段会通过上一步编译生成的数据与模板,在内存中编译和生成HTML结构,注意此时还没有生成当前的DOM结构

渲染HTML结构

将内存中编译生成的HTML结构替换掉el属性指定的DOM元素,该阶段结束后就已经包含了当前组件的DOM结构了

数据更新

在这个阶段会根据页面中的数据改变进行反复执行,在这当中会根据最新的数据,重新渲染组件的DOM结构。

初步销毁组件

将要进行销毁此组件时,在该将要进行销毁此组件时,这个阶段组件还处于正常工作状态,并未被完全销毁,这个阶段先会销毁数据侦听器,子组件,事件监听

销毁组件

到达这个阶段代表组件已经被销毁完毕,这个组件在浏览器中对应的DOM结钩已经被完全移除


生命周期函数

函数名阶段
beforeCreate创建前
created创建后
beforeMount挂载前
mounted挂载后
beforeUpdate更新前
updated更新后
beforeDestroy销毁前
destroyed销毁后

beforeCreate

创建前:在这个阶段组件的props、data、methods尚未被创建,都处于不可用状态
在这个阶段主要适合一些在不需要依赖的组件的操作
例如:访问当前页面的权限是否足够,访问login时已经存在登录类似这种情况则可以使用这个函数。

created

创建后 :组件的props、data、methods已经创建好,都处于可用状态,但是组件的模板结构还未生成。
依赖这个特性,我们在这个函数内发起Ajax的请求是最好的,因为这里已经存在data了,这里是最快能够发起Ajax请求的地方,而Ajax又需要尽快的发起请求以便更快的响应,所以这里是最适合发起Ajax请求的地方。

beforeMount

挂载前:将要把内存中编译好的HTML结构渲染到浏览器中。此时浏览器中还没有当前组件的DOM结构。
在这个阶段的实际应用比较少,beforeMount这个阶段是过渡性的,一般很少用到。

mounted

挂载后:这个阶段已经把内存中的HTML结构,成功的渲染到了浏览器之中。此时浏览器中已然包含了当前组件的DOM结构。
这个阶段中最适合使用操作DOM结构的方法,比如需要根据数据来进行显示异常,需要数据进行渲染等等,这个阶段是最常用到的阶段,大部分对于数据渲染的操作都可以在此完成。

beforeUpdate

更新前:将需要根据变化过后、最新的数据,重新渲染组件的模板结构
在这个阶段中适合进行数据更新前的操作,例如对数据的监听,对数据变化的操作,注意在这个阶段不能依赖DOM组件进行操作,此时DOM的值虽然已经改变,但是获取的DOM还是处于更新的状态。

updated

更新后:已经根据最新的数据,完成了组件DOM结构的重新渲染
这个阶段中已经可以获取到最新状态的DOM,适合进行的操作是在数据更新后执行的,比如在更新前增加的数据侦听器,在此处可以进行移出,获取在数据更新完成之后需要对最新的DOM进行一系列的逻辑操作,都可以在此处使用。

beforeDestroy

销毁前:将要销毁此组件,此时尚未销毁,组件还处于正常工作的状态
在这个阶段适合销毁前的一系列操作,比如我要删除一行数据,此处就可以增加一个确定时间,当确定之后才去进行销毁,或者需要在销毁之前对其他DOM其他数据进行操作。

destroyed

销毁后:组件已经被销毁,此组件在浏览器中对应的DOM结构已经被完全移出。
调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。

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

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

相关文章

视觉SLAM数据集(二):EuRoC DataSet

本文展示了在微型飞行器(MAV)上收集的视觉惯性数据集。数据集包含立体图像、同步 IMU 测量以及精确的运动和结构地面实况。 这些数据集发表于:M. Burri,J. Nikolic,P. Gohl,T. Schneider,J. Reh…

运维监控Zabbix部署——详细图文讲解

运维监控Zabbix部署 简介 Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。 Zabbix 是一个企业级分布式开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康…

StarRocks案例2: 升级后性能变慢

文章目录 一. 问题描述二. 解决方案2.1 从慢查询定位2.2 定位CPU解析时间就的问题 一. 问题描述 2023-05-18 将StarRocks从2.3.0升级到2.5.5。 升级完成后,所有的查询均比较慢,前端报表页面点开也卡。 二. 解决方案 2.1 从慢查询定位 StarRocks慢查询…

智慧档案馆十防一体化建设主要设计依据

1、《中华人民共和国档案法》 2、《中华人民共和国档案实施办法》 3、GB/T 9386-1988《计算机软件测试文件编制规范》 4、GB/T 15532-1995《计算机软件单元测试规范》 5、GB/T 30961-2014 嵌入式软件质量度量 6、GB2421-89 电工电子产品基本环境试验规程 7、GB16796-2009…

阿里影业业绩:2023财年经调整EBITA盈利2.95亿元,同比增加106%

今年以来,社会经济加速恢复,影视业也在加速抓住市场机遇,走进电影院的佳作和消费者都在顺势增长。 5月31日,阿里影业(01060)发布2022/23财年业绩,得益于业务结构的多样化建设及运营效率的持续提…

调试代码可能会成为潜在的安全漏洞

有时候,我们不得不开发一些所谓的”调试用”代码。 但是,不要忘记了,虽然这些调试代码只是用来调试的,但是并不意味着我们就可以忽略掉安全性。 我记得,曾经有一位客户问过如下的问题: 我们正在开发一个后…

一文带你搞懂防盗链

防盗链 举个例子。我们平时在网上看到图片,觉得不错,想要复制地址。有的复制地址后我们可以拿来用,但是有的,就算是复制地址,用到我们自己的img上,还是没效果。 原因是,有的图片所在服务有自己…

跨境电商客户服务五步法

互联网技术的革新与升级对商务客服产生了巨大的影响,过去由在线客服与客户直接电联的单一服务形式被全渠道客服系统所替代。在电子商务时代,商家与客户之间的互动变得尤为重要:一方面,卖家通过分析客户喜好及消费趋向来针对性处理…

WhatsApp-跨境电商必争之地

作为世界上最受欢迎的即时通讯软件,WhatsApp在全球拥有超过20亿的月活跃用户,覆盖180多个国家,每天通过WhatsApp发送的消息数量超过了1000亿条。作为中国企业出海的热门国家,印度、巴西、美国、印尼...同时也是WhatsApp受众排名前…

数据在内存中的存储(2)——浮点数

目录 1、什么是浮点数 2、浮点数与整数存储方式相同吗? 3、浮点数的存储规则 3.1 、国际标准IEEE(电气和电子工程协会) 754 3.2、IEEE 754规定: 3.3、IEEE 754对有效数字M的规定。 3.4、IEE 754对有效数字E的规定 E不全为0或不全…

Day58【单调栈】739.每日温度、496.下一个更大元素 I

739.每日温度 力扣题目链接/文章讲解 视频讲解 暴力解法很容易想到。外层 for 遍历填充 answer,内层 for 针对每一天去寻找下一个更高温度 直接超时 本题可以采用单调栈解决! 什么是单调栈? 从名字上就听的出来,单调栈中…

创建型设计模式05-抽象工厂模式

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 抽象工厂模式 1、抽象工厂模式介绍 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式&#x…

MATLAB按照曲线模型拟合数据

用到了曲线拟合工具箱,如果没有下载需要另外安装: 没有下载的话在命令行内输入cftool不会弹出窗口,而是提示没有这个命令 在菜单栏的APP: 点击获取更多APP: 在弹出的窗口输入Curve Fitting Toolbox 注意这里输入cft…

100种思维模型之多维视角思维模型-70

“多维视角思维模型”让我们用众生之眼看世界,继而看见更真实世界的思维模型。 01、何谓多维度视角思维模型 一、多维度视角 所谓多维视角,指的是除了用自己本能的视角看待问题,还会用360度其他人的视角,如对立面的视角&#xff…

仅用自然语言,让ChatGPT输出连贯的长篇小说!苏黎世联邦理工大学提出RecurrentGPT

夕小瑶科技说 原创 作者 | ZenMoore,Wangchunshu Zhou 前言 ChatGPT 是万能的吗? 显然不是,至少在今天我们所讨论的长文本生成上,ChatGPT 可以说是几乎完全不太可能生成长篇小说。 在某种程度上,这是 Transformer 模…

2自由度并联关节的制作

1. 运动功能说明 2自由度并联关节模组的主要运动方式为用舵机带动连杆摆动。 2. 结构说明 构成本模组的零部件主要是舵机(行程0度~180度)、舵机支架、舵机输出头、连杆、螺丝、螺母等。此模组的机械系统介绍及运动学算法讲解可参考【R306】5自由度并联机…

回收站不见了怎么恢复?3个方法快速解决!

案例:我想把需要删除的软件拖到桌面回收站中进行删除,却发现我电脑桌面上的回收站不见了,有小伙伴知道怎么恢复吗? 在日常使用电脑的过程中,回收站是一个至关重要的功能。当我们删除文件时,它提供了一个安…

git 远端分支管理、仓库迁移:017

1. 在Github上创建分支: 2. 在Github上删除分支: 3. 使用命令来删除远端分支: 如果远端分支发生改变, 需要通过git pull来获取远端最新分支,如下图,就可以看到获取到了最新分支: 查看本地分支和…

springboot+vue新闻稿件java在线投稿管理系统

本文介绍了新闻稿件管理系统的开发全过程。通过分析新闻稿件管理系统管理的不足,创建了一个计算机管理新闻稿件管理系统的方案。文章介绍了新闻稿件管理系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计…

数据库整理

文章目录 1、将Excel转换为CSV1.1 代码 2、将CSV文件的数据追加到另一个CSV文件2.1 代码 3 、另外的发现 背景:在数据库里面导出来一批excel文件,现在需要将这些数据进行合并为csv文件 分两步: 1、将Excel转换为CSV 参考:用Pytho…