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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
写出更好的JavaScript程序之undefined篇(中)
Nov 23 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
Nov 07 Javascript
table insertRow、deleteRow定义和用法总结
May 14 Javascript
Jquery遍历Json数据的方法
Apr 20 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
jQuery利用FormData上传文件实现批量上传
Dec 04 jQuery
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php数组分页实现方法
2016/04/30 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
用Python编写一个国际象棋AI程序
2014/11/28 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
关于python写入文件自动换行的问题
2018/06/23 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Pandas之缺失数据的实现
2021/01/06 Python
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
internal修饰符起什么作用
2013/12/16 面试题
致100米运动员广播稿
2014/02/14 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
教师辞职书范文
2015/02/26 职场文书