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 相关文章推荐
用ADODB.Stream转换
Jan 22 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
Jun 05 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
JavaScript头像上传插件源码分享
Mar 29 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
Vue学习笔记进阶篇之函数化组件解析
Jul 21 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
Apr 28 Javascript
vue watch关于对象内的属性监听
Apr 22 Javascript
Element Notification通知的实现示例
Jul 27 Javascript
vue自定义组件实现双向绑定
Jan 13 Vue.js
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
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
php支付宝APP支付功能
2020/07/29 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
Javascript引用指针使用介绍
2012/11/07 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
python装饰器decorator介绍
2014/11/21 Python
python引用DLL文件的方法
2015/05/11 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python爬取微信公众号文章
2018/08/31 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
Python列表list排列组合操作示例
2018/12/18 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
某公司.Net方向面试题
2014/04/24 面试题
护士自荐信
2013/10/25 职场文书
社区班子对照检查材料
2014/08/27 职场文书