vue 生命周期_Vue生命周期小白看了都会的

9c8d8905ea54ae0a4029b2149a194480.gif

最近一直在学习Vue,而vue生命周期是我们不可能绕开的一个很核心的知识点,今天来简单的梳理一下大概的内容。

一、钩子函数

在一开始学习的时候,总有钩子函数这个名词冒出来,而且在vue官网文档中也频繁出现,也相信给很多初学者带来了困扰。那到底什么是钩子函数呢?

按我个人的理解,钩子函数就是一个函数,他最大的特点就是在生命周期执行流程中去执行的。钩子函数钩子函数,就是挂载一些东西的,我们把需要实现的一些功能代码写在对应的钩子函数中,当生命周期在执行的时候,就能执行我们挂载的代码。

钩子函数的实现,基本原理就是callback,回调函数。

二、vue生命周期图示(注释)

原图是从vuejs官方文档上拷下来的,自己用ps写了一点注释。

cc5e30d4e450cba86a5d943fbbc6dced.png

三、vue生命周期详细解析

1. 实例化vue(组件)对象:new Vue()

2. 初始化事件和生命周期 init events 和 init lifecycle

3. beforeCreate函数:

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

即此时vue(组件)对象被创建了,但是vue对象的属性还没有绑定,如data属性,computed属性还没有绑定,即没有值。此时还没有数据和真实DOM。属性还没有赋值,也没有动态创建template属性对应的HTML元素(二阶段的createUI函数还没有执行)

4. 挂载数据(属性赋值)

包括 属性和computed的运算,通过依赖注入导入依赖

5. Created函数:

此时 vue对象的属性有值了 ,但是DOM还没有生成,$el属性还不存在。

此时有数据了,但是还没有真实的DOM

即:data,computed都执行了。属性已经赋值,但没有动态创建template属性对应的HTML元素,所以,此时如果更改数据不会触发updated函数

如果:数据的初始值就来自于后端,可以发送ajax,或者fetch请求获取数据,但是,此时不会触发updated函数

6. 检查

1)检查是否有el属性

检查vue配置,即new Vue{}里面的el项是否存在,有就继续检查template项。没有则等到手动绑定调用vm.$mount()

完成了全局变量$el的绑定。

2)检查是否有template属性

检查配置中的template项,如果没有template进行填充被绑定区域,则被绑定区域的el对象的outerHTML(即整个#app DOM对象,包括< div id=”app” >和< /div>标签)都作为被填充对象替换掉填充区域

即:如果vue对象中有 template属性,那么,template后面的HTML会替换$el对应的内容。如果有render属性(渲染),那么render就会替换template。

即:优先关系时:render > template > el

7. beforeMount函数:

模板编译(template)、数据挂载(把数据显示在模板里)之前执行的钩子函数

此时 this.$el有值,但是数据还没有挂载到页面上。即此时页面中的{{}}里的变量还没有被数据替换

8. 模板编译:用vue对象的数据(属性)替换模板中的内容

9. Mounted函数:

模板编译完成,数据挂载完毕

即:此时已经把 数据挂载到了页面上 ,所以,页面上能够看到正确的数据了。

一般来说,我们在此处发送 异步请求 (ajax,fetch,axios等),获取服务器上的数据,显示在DOM里。

10. beforeUpdate函数:

组件更新之前执行的函数,只有数据更新后,才能调用(触发)beforeUpdate,注意:此数据一定是在模板上出现的数据,否则,不会,也没有必要触发组件更新(因为数据不出现在模板里,就没有必要再次渲染)

数据更新了,但是,vue(组件)对象对应的dom中的内部(innerHTML)没有变,所以叫作组件更新前。(数据更了,模板没更新)

11. updated函数:

组件更新之后执行的函数

vue(组件)对象对应的dom中的内部(innerHTML)改变了,所以,叫作组件更新之后

12. beforeDestroy:vue(组件)对象销毁之前

13. destroyed:vue组件销毁后

最后

可以关注下公众号进交流群,大家一起学习讨论!

如果本文对您的有帮助的话可以点赞评论收藏下转发到您的朋友圈!编辑不易非常感谢!

85a3d3914548059a00ba23489fb0033b.gif

7ef343824115fa414f63be1ffd5c8b70.png

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

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

相关文章

实例7:python

#将一个列表的数据复制到另一个列表中。 #程序分析&#xff1a;使用列表[:]。 #程序源代码&#xff1a; #!/usr/bin/python -- coding: UTF-8 -- #a [1, 2, 3] #b a[:] #print (b) #import copy #a [1, 2, 3] #bcopy.copy(a) #print(b) #[1, 2, 3] #使用 Python3 的参…

实例8:python

#输出 9*9 乘法口诀表。 #!/usr/bin/python -- coding: UTF-8 -- #for i in range(1, 10): print for j in range(1, i1): print ("%d*%d%d" % (i, j, i*j),) #!/usr/bin/python3 i0 j0 while i<9: i1 while j<9: j1 print(j,“x”,i,"",i*j,…

ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

浅谈为什么很多蓝牙模块厂家选择nRF52832&#xff1f;现在蓝牙低功耗(BLE)SOC作为新一代蓝牙&#xff0c;以其低功耗的优势&#xff0c;正凸显出强大的市场竞争力&#xff0c;而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片更是受到大家的欢迎。Nordic是一家无晶圆厂半导体公…

实例9:python

#题目&#xff1a;暂停一秒输出。 #程序分析&#xff1a;使用 time 模块的 sleep() 函数 #!/usr/bin/python -- coding: UTF-8 -- import time l[1,2,3,4] for i in range(len(l)): print (l[i]) time.sleep(5) # 暂停一秒输出

php对话框制作,织梦系统“提示窗口对话框类”详解,oxwindow.class.php、catalog_do.php...

如果对织梦系统做过二次开发或学深入研究过的话&#xff0c;一定会知道在我们做织梦二次开发时&#xff0c;一般会把php文件以及对应的模板文件起的名字&#xff0c;除了扩展名外&#xff0c;其它都一样&#xff0c;这是织梦文件起名的一个特点。例如&#xff0c;index_body.ph…

B-JUI文档、下载

概述 特别说明 本文档仅适用于最新版的B-JUI&#xff0c;网站首页或下载页可以查看B-JUI的最后更新时间。 B-JUI前端管理框架适用于快速开发各类WEB管理系统&#xff0c;可与任意后端程序&#xff08;java、php、.net...&#xff09;配合使用。 B-JUI基于Bootstrap样式及jQuery…

vba xml 怎么设置父节点_熊二做了一个xml报文处理的开源库easyxml

❝自信、冷静、专注。—— TM 熊的自我勉励❞1. 前言熊二从去年开始&#xff0c;因项目需求接触到xml报文的处理&#xff0c;也是我第一次学习用C/C的方式处理基于DOM模型的xml报文。因为本人比较懒hhh&#xff0c;所以第一反应就是去看看网上有没有什么大家都在用的比较好的xm…

实例10:python

#题目&#xff1a;暂停一秒输出&#xff0c;并格式化当前时间。 #!/usr/bin/python -- coding: UTF-8 -- import time print (time.strftime(’%Y-%m-%d %H:%M:%S’,time.localtime(time.time()))) 暂停一秒 time.sleep(1) print (time.strftime(’%Y-%m-%d %H:%M:%S’,…

iview 可以选择当天 禁用_人脸识别刚要普及,怎么就被禁用了?|人脸识别|人脸信息|世超|rekognition...

点击播放 GIF 0.5M人脸识别大家都不陌生了&#xff0c;从 iPhone 上面的 Face ID 再到支付宝刷脸支付&#xff0c;这个曾经只有在科幻电影上面才能见到的技术逐渐变得越来越司空见惯。点击播放 GIF 0.4M按理来讲&#xff0c;一项方便的技术应该越来越普及才对&#xff0c;不过世…

oracle ytd,hana ytd计算

YTD解答方案要求&#xff1a;输出字段: 年月, YTD金额因为我这边只有system一个账号&#xff0c;就用system账号写合同表的结构和数据如下:create column table "SYSTEM"."CONTRACTS"("CONTRACT_ID" INTEGER null, --合同ID"START_DATE&qu…

linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法

文件通过文件系统在磁盘及分区上命名、存储、检索以及更新&#xff0c;文件系统是在磁盘上组织文件的方式。文件系统分为两个部分&#xff1a;用户数据和元数据(文件名、创建时间、修改时间、大小以及目录层次结构中的位置等)。在本指南中&#xff0c;我们将用 7 种方法来识别你…

二分归并排序算法_第五篇排序算法|归并排序

0x01&#xff0c;前言闲叙最近几年很少看电视了&#xff0c;因为没时间看了&#xff0c;除了偶尔刷刷头条&#xff0c;基本上不会花大块的时间沉迷于电视剧&#xff0c;综艺&#xff0c;这或许就是短视频时代所带来的一些改变吧&#xff0c;我们都会深受其中。0x02&#xff0c;…

linux系统访问文件夹ls,Linux系统目录结构,文件类型以及ls、alias命令

一、Linux目录结构登录系统之后&#xff0c;在当前命令窗口输入以下指令&#xff0c;/是Linux操作系统里最核心的一个目录&#xff0c;所有的文件和目录全部在它下面&#xff0c;所以称为“根目录”&#xff1a;# ls / //列出根目录下的文件得到如图结果&#xff1a;如图上图所…

qq文件对方接收后一定会有提示吗_为什么微信、QQ不推出已读功能?因为它敢出网友就敢卸载...

12月14日&#xff0c;腾讯 QQ突然发起了一个"很吓人"的调查——你希望 QQ 出已读功能吗&#xff1f;在短时间内&#xff0c;有 超过3000 人参与&#xff0c;其中有 2660 人(71.6%)投票 "你出我就卸载 QQ"选项&#xff0c;大家旗帜鲜明地表示&#xff0c;并…

实例11:python

#古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c; #小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; #!/usr/bin/python -- coding: UTF-8 -- #兔子的规律…

实例12:python

#判断101-200之间有多少个素数&#xff0c;并输出所有素数。 #程序分析&#xff1a;判断素数的方法&#xff1a;用一个数分别去除2到sqrt(这个数)&#xff0c;如果能被整除&#xff0c;则表明此数不是素数&#xff0c;反之是素数。 #!/usr/bin/python -- coding: UTF-8 -- #…

javascript用户登录_SAP HANA XS的JavaScript安全事项

公众号&#xff1a;matinal前言部分我们都知道web程序都有潜在的安全隐患问题&#xff0c;那么SAP HANA XS的JavaScript也是一样&#xff0c;使用服务器端JavaScript编写应用程序代码&#xff0c;也有潜在的外部攻击&#xff08;和风险&#xff09;。注意事项下面列出几点注意事…

实例13:python

#题目&#xff1a;打印出所有的"水仙花数"&#xff0c;所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如&#xff1a;153是一个"水仙花数"&#xff0c;因为1531的三次方&#xff0b;5的三次方&#xff0b;3的三次方…

spring的基本用法

关于spring的几种注入方式 理解类之间的关联关系 一&#xff0c;set注入 在这之前我们得spring的jar包&#xff0c;可以去官网下&#xff0c;添加到WebContent下 WEB-INF 下 lib里 这种方式就得首先实现set方法&#xff0c;现在以英雄&#xff08;Hero接口&#xff09;和武器&a…

linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

Anaconda指的是一个开源的Python发行版本&#xff0c;其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包&#xff0c;Anaconda 的下载文件比较大(约 531 MB)&#xff0c;如果只需要某些包&#xff0c;或者需要节省带宽或存储空间&#xff0c;也可以使用…