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

一、钩子函数

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

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

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

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

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

三、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组件销毁后

最后

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

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

vue 生命周期_Vue生命周期小白看了都会的相关推荐

  1. vue 声明周期函数_Vue 生命周期详解

    Vue 生命周期详解 Vue 生命周期流程 最开始,用户使用 new Vue() 创建根 Vue 实例,或者 Vue 实例化子组件都会调用_init方法(我们将这两种实例都称为vm): functio ...

  2. vue 生命周期_Vue 生命周期

    生命周期图: Vue 实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模版.挂载 Dom -> 渲染.更新 -> 渲染.卸载等一系列过程,我们称这是 Vue 的生命周期. up ...

  3. vue声明周期_Vue生命周期的理解

    当面试官问:"谈谈你对vue的生命周期的理解",听到这句话你是不是心里暗自窃喜:这也太容易了吧,不就是beforeCreate.created.beforeMount.mounte ...

  4. actived生命周期_vue生命周期钩子函数actived没有执行

    调用actived钩子函数,发现代码没有执行.......为何vue 背景技术选型:vue+vue-router+vuex 第一步:路由配置文件设置keepAlive=truevue-router / ...

  5. 小白看完都会了!京东物流java开发

    开头 我们面试的时候 ,经常会被问这种到问题:Spring中bean的循环依赖怎么解决? Spring中bean的加载过程? spring相关的问题一直是大厂面试常问到的一个问题,也是一直困扰这我们, ...

  6. 3Dmax入门篇,常用快捷命令及两种基础建模方式,小白看了都会!

    今天我又来给大家分享知识了! 3D MAX入门篇,常用快捷命令及两种基础建模方式 基于图片的对程型模型----画线式建模 1.在界面画一个平面 2.调整平面大小,确认与要插入的图片尺寸一样 3.通过添 ...

  7. 计算机组装小白,小白看了都会装电脑,简单实用的电脑组装教程!

    许多玩家完了多年游戏,却连自己的电脑都没有打开过,碰到小问题只能搬着电脑跑电脑城,其实就电脑机箱里的那点事儿,几分钟就搞懂了. 网上的教程有很多,但是太过高深繁琐,下面给大家整理了一分简单易懂的电脑组 ...

  8. (小白看了都会!)zzulioj 1107: 回文数猜想(函数专题)

    哥们儿,姐们儿,代买部分可复制粘贴,但是希望你能看看注释理解之后,一定一定一定不看代码自己敲出来,如果能给我一个小小的赞就更好啦~谢谢你~ 代码及注释如下: #include<stdio.h&g ...

  9. 小白看完都会了!分享两道阿里P7究极难度算法题,已拿offer入职

    一个朋友是前阿里人,37岁,离职后就职美团.以前投一个面一个,今年想跳槽,但没想到投十个能有两个面试机会就不错了,最后索性又回了阿里做架构. 他在面试的时候,碰见比自己大的面试官,态度和善,一般面试都 ...

最新文章

  1. web.xml 里context-param 、listener、 filter、servlet 加载顺序
  2. Instruments--CoreAnimation页面性能调试
  3. 11月29号例会记录
  4. transformers库的使用【二】tokenizer的使用,模型的保存自定义
  5. Interview:算法岗位面试—10.17早上—上海某银行人工智能算法岗位(偏算法,四大行之一)技术面试之项目讲解和激活函数的选择
  6. 18.self关键字.rs
  7. H5 移动端 获取腾讯地图计算两经纬度的实际距离(可批量)_多地打卡
  8. jQuery模拟下拉框单选框复选Select,Checkbox,Radio
  9. mysql mvc javascript_MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。
  10. keras中的模型保存和加载
  11. 制造业数字化转型的启明星——低代码开发平台
  12. 排列组合思维导图_巧用思维导图做数学单元整理
  13. 进程和计划任务管理|linux
  14. LR参数化,参数化类型:Fille类型--2列多个参数
  15. easyexcel 字体加粗
  16. vue获取麦克风_微信小程序实现录音时的麦克风动画效果实例
  17. 理想低通滤波器(频率域滤波)
  18. linux命令查看iotop,Linux系统IO分析工具之iotop参数详解(查看IO占用)
  19. 大数据之数据倾斜剖析
  20. VTK学习-第一个多柱体生成

热门文章

  1. C#获取txt记事本内容,防止乱码情况
  2. Oracle数据文件scn不一致,数据文件SCN的一致性问题
  3. The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/etc] is not valid
  4. springboot : Failed to decode downloaded font 和 OTS parsing error
  5. hadoop Connection refused: no further information原因排查(Centos7)
  6. JS最新的身份证验证代码
  7. 高德地图开发 怎么去除城市信息
  8. ORA-27101 shared memory realm does not exist 错误处理
  9. C# 系统环境变量读取
  10. javascript各种事件