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 相关文章推荐
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
Jan 13 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
js+canvas绘制图形验证码
Sep 21 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中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
python将音频进行变速的操作方法
2020/04/08 Python
基于Python实现简单学生管理系统
2020/07/24 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
办公自动化专业大学生职业规划书
2014/03/06 职场文书
新学期教师寄语
2014/04/02 职场文书
安全负责人任命书
2014/06/06 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
党员查摆剖析材料
2014/10/10 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
七个Python必备的GUI库
2021/04/27 Python
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
instantclient客户端 连接oracle数据库
2022/04/26 Oracle