“你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。”
现在项目中遇到了,好好回头总结一波Vue生命周期,以后用到的时候再来翻翻。

啥叫Vue生命周期?

每个 Vue 实例在被创建时都要经过一系列的初始化过程。
例如:从开始创建、初始化数据、编译模板、挂载Dom、数据变化时更新DOM、卸载等一系列过程。
我们称 这一系列的过程 就是Vue的生命周期。
通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会,利用各个钩子来完成我们的业务代码。

啥也不说,先来个干货

这是对于Vue生命周期,官网给的那张图的标注图,图片网上看到的,我觉得标注地很nice,建议一步步仔细看完图片,然后把图片自己悄悄保存下来,对照着图片的内容看第二部分的举例说明。

我相信程序员看代码比看文字更容易理解

对照着上图标注的内容,我们一个钩子一个钩子地举例说明。

1.beforeCreate

实例初始化之后、创建实例之前的执行的钩子事件。
如下例子:

<body>
<div id="root">{{test}}</div>
<script type="text/javascript">const vm = new Vue({el: '#root',data: {test: '天王盖地虎'},beforeCreate() {console.log('beforeCreate钩子事件:');console.log(this.$data);console.log(this.$el);}})
</script>
</body>
复制代码

得到的结果是:

小总结:创建实例之前,数据观察和事件配置都没好准备好。也就是数据也没有、DOM也没生成。

2.created

实例创建完成后执行的钩子
在上一段代码例子中,我们再来console一下。

<body>
<div id="root">{{test}}</div>
<script type="text/javascript">const vm = new Vue({el: '#root',data: {test: '天王盖地虎'},created() {console.log('created钩子事件:');console.log(this.$data);console.log(this.$el);}})
</script>
</body>
复制代码

得到的结果是:

小总结:实例创建完成后,我们能读取到数据data的值,但是DOM还没生成,挂载属性el还不存在。

3.beforeMount

将编译完成的html挂载到对应的虚拟DOM时触发的钩子
此时页面并没有内容。
即此阶段解读为: 即将挂载
我们打印下此时的$el

beforeMount() {console.log('beforeMount钩子事件:');console.log(this.$el);}
复制代码

得到的结果是:

小总结:此时的el不再是undefined,成功关联到我们指定的dom节点。但是此时的{{test}}还没有成功渲染成data中的数据,页面没有内容。
PS:相关的render函数首次被调用。

4.mounted

编译好的html挂载到页面完成后所执行的事件钩子函数。
此时的阶段解读为: 挂载完毕阶段
我们再打印下此时$el看看:

mounted() {console.log('mounted钩子事件:');console.log(this.$el);}
复制代码

得到的结果是:

可见, {{test}}已经成功渲染成data里面test对应的值“天王盖地虎”了。
小总结:此时编译好的HTML已经挂载到了页面上,页面上已经渲染出了数据。一般会利用这个钩子函数做一些ajax请求获取数据进行数据初始化。
PS:mounted在整个实例中只执行一次。

5.beforeUpdate

小总结:当修改vue实例的data时,vue就会自动帮我们更新渲染视图,在这个过程中,vue提供了beforeUpdate的钩子给我们,在检测到我们要修改数据的时候,更新渲染视图之前就会触发钩子beforeUpdate。

6.updated

小总结:此阶段为更新渲染视图之后,此时再读取视图上的内容,已经是最新的内容。
PS:
1、该钩子在服务器端渲染期间不被调用。
2、应该避免在此期间更改状态,因为这可能会导致更新无限循环。

7.beforeDestroy

小总结:调用实例的destroy( )方法可以销毁当前的组件,在销毁前,会触发beforeDestroy钩子。

8.destroyed

小总结:成功销毁之后,会触发destroyed钩子,此时该实例与其他实例的关联已经被清除,Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

话在最后

其实还有三个生命周期钩子没列出来:activated、deactivated、errorCaptured。这三个大家遇到了自行了解哈,暂且这样吧。

转载于:https://juejin.im/post/5bd6962e51882558bd3f0696

标注图+部分举例聊聊Vue生命周期相关推荐

  1. 聊聊 vue 生命周期

    一.常用的常用的生命周期钩子: mounted: 发送 ajax 请求.启动定时器.绑定自定义事件.订阅消息等[初始化操作] mounted() {console.log('vm 实例被挂载之后:mo ...

  2. Vue生命周期详解(图解)

    程序员学习必备书籍推荐: 首先我们对Vue生命周期官方给出的图进行详细解释 vue生命周期详细图解 什么是生命周期? 简而言之:从生到死的过程,从Vue实例创建-运行-销毁的过程 Vue实例有一个完整 ...

  3. vue生命周期,vue执行顺序图,钩子函数

    一.生命周期导图 通过代码,理解生命周期,查看钩子函数的执行顺序 注:复制就可以运行查看 <!DOCTYPE html> <html> <head><titl ...

  4. vue生命周期中文图

    一.整理的Vue生命周期中文图 二.个人理解的Vue生命周期 什么是生命周期?简而言之:从生到死的过程,从Vue实例创建-运行-销毁的过程Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据. ...

  5. 超详细vue生命周期解析(详解)

    vue是每一个前端开发人员都绕不过的一个技术,在国内的市场占有量也是非常的大,我们大部分人用着vue, 却不知道他内部其实经历了一些什么.每个生命周期又是什么时候开始执行的.我们今天来详细的看一看 首 ...

  6. Vue 生命周期记录_学习笔记

    官方给出的设计图入戏 为了能更好的理解这个图呢,写了下面的demo <!DOCTYPE html> <html><head><meta charset=&qu ...

  7. “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)

    我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...

  8. Vue生命周期---vue工作笔记0013

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们再来看一下vue的声明周期 在帮助文档中也有说,生命周期中的函数叫做钩子函数. 可以从图中 ...

  9. 1.vue生命周期详解(2020.12.05)

    vue生命周期,直接上官方图 补一下引用vue的链接( src = "https://cdn.bootcss.com/vue/2.4.2/vue.js) 要明确生命周期,我们必须从钩子下手: ...

最新文章

  1. android 找不到类文件,Android Studio单元测试找不到类文件!
  2. vmstat 命令的使用
  3. Mac os下安装brew
  4. MVC架构中,用户的请求简单梳理
  5. java内存四大区,jvm基础-内存区域
  6. 如何应对软件项目的投标答辩
  7. android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换
  8. R 语言下常用第三方库的说明
  9. Mac 系统下 配置多个ssh-key (git sourcetree)
  10. 中国大学MOOCPython语言程序设计基础学习笔记和课后练习5-6周(南京邮电大学)
  11. SQL Server 2008 R2 是免费版下载地址
  12. R 计算均方差MSE(mean squared error)
  13. CodeForces - 1139C Edgy Trees (快速幂+dfs)
  14. WebBrowser 显示Html内容3点细节技巧
  15. [转帖]兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍
  16. Ubuntu 16.04安装的一些基础软件--搜狗输入法、Chrome、网易云音乐、sublime text
  17. 核心交换机、汇聚交换机、接入交换机
  18. NoSQL数据库:盘点MongoDB的八宗罪
  19. FreeCAD学习笔记——Mesh Scripting、Part Module和Code snippets
  20. 初学者如何学习FPGA转

热门文章

  1. 企业云桌面-07-安装虚拟机-001-Win701
  2. redhat7 Oracle 12C 安装
  3. 和lock一起学beego 博客系统开发为例(六)
  4. 使用第三方工具覆写Object中方法
  5. Java网络编程从入门到精通(4):DNS缓存
  6. 365Rss.cn Beta 1.0 (内测版本)更新 2007-1-18:速度、人性化、简洁化
  7. 潘建伟团队进行人类首次洲际量子通信 都发送了什么
  8. 《2040大预言:高科技引擎与社会新秩序》——2.6 会计师如何改写未来
  9. 《STM32库开发实战指南:基于STM32F103(第2版)》——2.1节仿真器简介
  10. OpenCV3的机器学习算法-K-means-使用Python