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 相关文章推荐
js 通用javascript函数库整理
Aug 14 Javascript
javascript break指定标签打破多层循环示例
Jan 20 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
javascript去掉代码里面的注释
Jul 24 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
vue项目中使用vue-i18n报错的解决方法
Jan 13 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 Javascript
原生js无缝轮播插件使用详解
Mar 09 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实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
用 JSON 处理缓存
2007/04/27 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
新郎新娘婚礼答谢词
2014/01/11 职场文书
中年人生感言
2014/02/04 职场文书
党建目标管理责任书
2014/07/25 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2014年个人售房协议书
2014/10/30 职场文书
工作态度怎么写
2015/06/25 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
详解Python中__new__方法的作用
2022/03/31 Python
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js