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 相关文章推荐
ext for eclipse插件安装方法
Apr 27 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 Javascript
了解Javascript的模块化开发
Mar 02 Javascript
jquery实现手风琴效果
Nov 20 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 Javascript
js实现年月日表单三级联动
Apr 17 Javascript
微信小程序开发图片拖拽实例详解
May 05 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 Javascript
4 种滚动吸顶实现方式的比较
Apr 09 Javascript
Vue实现回到顶部和底部动画效果
Jul 31 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 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 无限级缓存的类的扩展
2009/03/16 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
js Math 对象的方法
2013/09/01 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
使用bootstrap3开发响应式网站
2016/05/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python实现的简单文本类游戏实例
2015/04/28 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Numpy之文件存取的示例代码
2018/08/03 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
Python中的集合介绍
2019/01/28 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python绘制组合图的示例
2020/09/18 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
培训班开班仪式主持词
2014/03/28 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers