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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
javascript dom 操作详解 js加强
Jul 13 Javascript
js替换字符串的所有示例代码
Jul 23 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
table行随鼠标移动变色示例
May 07 Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
Sep 14 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
详解js实时获取并显示当前时间的方法
May 10 Javascript
vue的三种图片引入方式代码实例
Nov 19 Javascript
js实现简单的贪吃蛇游戏
Apr 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
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
解密效果
2006/06/23 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jQuery基础知识小结
2014/12/22 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
django中forms组件的使用与注意
2019/07/08 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
三维科技面试题
2013/07/27 面试题
节能环保标语
2014/06/12 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
2015年加油站工作总结
2015/05/13 职场文书
检讨书怎么写?
2019/06/21 职场文书
导游词之张家界
2019/10/31 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js