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 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
jquery中输入验证中一个不错的效果
Aug 21 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
Javascript访问器属性实例分析
Dec 30 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 Javascript
node的process以及child_process模块学习笔记
Mar 06 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 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对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
php判断linux下程序问题实例
2015/07/09 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
python爬虫使用cookie登录详解
2017/12/27 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
Python continue语句实例用法
2020/02/06 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
python判断正负数方式
2020/06/03 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
python Scrapy框架原理解析
2021/01/04 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
《湘夫人》教学反思
2014/02/21 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
英语导游欢迎词
2015/09/30 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书