博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue 生命周期
阅读量:6140 次
发布时间:2019-06-21

本文共 1170 字,大约阅读时间需要 3 分钟。

  hot3.png

每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如,实例需要配置数据观测(data observer)、编译模版、挂载实例到 DOM ,然后在数据变化时更新 DOM 。下图展示的就是一个vue实例对象的生命周期。

生命周期图表:

从图上我们可以看到vue在生命周期中有这些状态,beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed。Vue在实例化的过程中,会调用这些生命周期的钩子,给我们提供了执行自定义逻辑的机会。

生命周期例子:

在这些vue钩子中,vue实例到底执行了那些操作,我们先看下面执行的例子

    vue生命周期测试例子    
{
{msg}}

生命周期方法:

页面初始化

vue对象初始化过程中,会执行到beforeCreate,created,beforeMount,mounted 这几个钩子的内容

beforeCreate :数据还没有监听,没有绑定到vue对象实例,同时也没有挂载对象

e686e0666c4305b85a7aec99e1e3ad4a036.jpg

created :数据已经绑定到了对象实例,但是还没有挂载对象

3bc16d01da13e631504cc43c9ae838b2187.jpg

beforeMount: 模板已经编译好了,根据数据和模板已经生成了对应的元素对象,将数据对象关联到了对象的 $el属性,$el属性是一个HTMLElement对象,也就是这个阶段,vue实例通过原生的createElement等方法来创建这个html片段,准备注入到我们vue实例指明的el属性所对应的挂载点

8d6e7a8efc03f3c539f8b0f0944186c0c98.jpg

mounted:将$el的内容挂载到了el,相当于我们在jquery执行了$(el).html($el),生成页面上真正的dom,上面我们就会发现dom的元素和我们$el的元素是一致的。在此之后,我们能够用方法来获取到el元素下的dom对象,并进 行各种操作

5a408cb1c9f250b940f6d936d94e972c4f7.jpg

数据变化

当我们的data发生改变时,会调用beforeUpdate和updated方法

beforeUpdate :数据更新到dom之前,我们可以看到$el对象已经修改,但是我们页面上dom的数据还没有发生改变

6cea7b811bc963dc9e11fc3a7e76c3c37e6.jpg

updated: dom结构会通过虚拟dom的原则,找到需要更新页面dom结构的最小路径,将改变更新到dom上面,完成更新

8f4fec03f07185e2301cad45ebd5a780b7f.jpg

实例的销毁

beforeDestroy :实例销毁前

62c84c0b8c9065aaa509dc5a0d457d47f49.jpg

destroed :实例销毁后,vue实例还是存在的,只是解绑了事件的监听还有watcher对象数据与view的绑定,即数据驱动

cec69c410c618bf5a658af871b853def8c6.jpg

转载于:https://my.oschina.net/sdlvzg/blog/1941834

你可能感兴趣的文章
视频直播Android推流SDK初体验
查看>>
第十三天:制定预算
查看>>
java技术团队必须要注意的那几个点
查看>>
Hibernate ORM 5.1.7 发布,数据持久层框架
查看>>
数百万网站因流行 PHP 脚本的安全漏洞而受影响
查看>>
《走进SAP(第2版)》——2.7 SAP对业务流程的支持
查看>>
《C语言解惑》—— 2.9 输出值的操作符
查看>>
Project Volta 让 Android 续航提升了多少?
查看>>
《树莓派实战秘籍》——1.7 技巧07使用过压获得更高的性能
查看>>
《SAS 统计分析与应用从入门到精通(第二版)》一1.4 SAS系统的文件管理
查看>>
《众妙之门——网页设计专业之道》——2.4 总结
查看>>
MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
查看>>
Java 注解详解 (annotation)
查看>>
鹰眼跟踪、限流降级,EDAS的微服务解决之道
查看>>
秘籍:程序猿该如何实力撩妹
查看>>
网络编程socket基本API详解
查看>>
API接口设计 OAuth2.0认证
查看>>
Mysql5.6的1755错误解决办法
查看>>
在命令行中运行“mvn compile”因为中文报错
查看>>
Docker的技术不再局限于测试和开发
查看>>