vue生命周期实例小结


Posted in Javascript onAugust 15, 2018

本文实例分析了vue生命周期。分享给大家供大家参考,具体如下:

每个Vue实例都存在完整的生命周期,经历从创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程。如下图所示

vue生命周期实例小结

钩子函数

vue的完整生命周期可分为三个阶段:初始化阶段、运行阶段和销毁阶段。共存在很多钩子函数,他们在vue生命周期不同的阶段进行操作,列举如下:

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed

钩子函数说明

  • beforeCreate

通过new Vue() 创建vue实例,vue的生命周期便拉开了序幕,首先会执行beforeCreate钩子函数。此时的vue实例只是一个空壳,还未挂载DOM元素,无法访问到数据和真实的dom,一般不做操作。

  • created

这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数和不会触发其他钩子函数,一般可以在这里做初始数据的获取。

  • beforeMount

在这个函数中虚拟dom已经创建完成(马上就要渲染),这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数。

  • mounted

在这个函数调用时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情。

  • beforeUpdate

当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染。

  • updated

当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom。

  • beforeDestroy

当通过某种方式调用$destroy方法后,立即执行beforeDestroy函数做一些善后工作,如清除计时器、清除非指令绑定的事件等。

  • destroyed

组件的数据绑定、监听等去掉后只剩下dom空壳,此时执行destroyed。当然,也可以在这里完成上述操作。

vue的生命周期:从出生到加载 到 销毁 有一套完整的生命周期过程
能够让我们进行在不同时期去写不同的代码 去做不同的事情

钩子函数:就是不同的生命周期 vue给我们暴露出来的 回调函数

示例:

var vn = new Vue({
el:'.box',
data:{
msg:'<h1>呵呵</h1>'
},
beforeCreate:function() {
alert("实例要创建了,要开始表演了");
},
created:function() {
alert('vue实例已经new出来了,方法和属性还没有编译');
},
beforeMount:function() {
alert('vue实例已经创建完成,马上要执行内部属性和方法的编译');
},
mounted:function() {
alert('对象和属性已经编译完成');
},
beforeUpdate:function() {
alert('数据马上更新,没保存赶紧保存');
},
updated:function() {
alert('数据已经更新');
},
beforeDestroy:function() {
alert('vue实例已经走到尽头了');
},
destroyed:function() {
alert("vue实例永远活在我们心中!!!");
}
})

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
jQuery之网页换肤实现代码
Apr 30 Javascript
JS生成不重复随机数组的函数代码
Jun 10 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
Nov 24 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
微信小程序自定义模态对话框实例详解
Aug 16 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
layui获取多选框中的值方法
Aug 15 #Javascript
layui radio性别单选框赋值方法
Aug 15 #Javascript
vue在手机中通过本机IP地址访问webApp的方法
Aug 15 #Javascript
LayUI表格批量删除方法
Aug 15 #Javascript
layui中table表头样式修改方法
Aug 15 #Javascript
详解redux异步操作实践
Aug 15 #Javascript
解决Layui数据表格中checkbox位置不居中的方法
Aug 15 #Javascript
You might like
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
JS实现self的resend
2010/07/22 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
numpy找出array中的最大值,最小值实例
2018/04/03 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python函数式编程实例详解
2020/01/17 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
女方回门宴答谢词
2014/01/14 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
幼儿园辞职书
2015/02/26 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
Python中npy和mat文件的保存与读取
2022/04/24 Python