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常见开发技巧详细整理
Jan 02 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
JS简单实现动画弹出层效果
May 05 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
Jan 30 Javascript
jquery表单提交带错误信息提示效果
Mar 09 Javascript
利用three.js画一个3D立体的正方体示例代码
Nov 19 Javascript
vue+axios+promise实际开发用法详解
Oct 15 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
Mar 10 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
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python友情链接检查方法
2015/07/08 Python
windows下python和pip安装教程
2018/05/25 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python是什么 Python的用处
2020/05/26 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
外包公司软件测试工程师
2014/11/01 面试题
安全月活动总结
2014/05/05 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书