基于Vue实例生命周期(全面解析)


Posted in Javascript onAugust 16, 2017

前面的话

Vue实例在创建时有一系列的初始化步骤,例如建立数据观察,编译模板,创建数据绑定等。在此过程中,我们可以通过一些定义好的生命周期钩子函数来运行业务逻辑。本文将详细介绍Vue实例的生命周期

图示

下图是Vue实例生命周期的图示

基于Vue实例生命周期(全面解析)

解释

接下来,根据提供的生命周期钩子,对Vue实例各个阶段的情况进行详细说明

【beforeCreate】

在实例开始初始化时同步调用。此时数据观测、事件等都尚未初始化

【created】

在实例创建之后调用。此时已完成数据观测、事件方法,但尚未开始DOM编译,即未挂载到document中

【beforeMount】

在mounted之前运行

【mounted】

在编译结束时调用。此时所有指令已生效,数据变化已能触发DOM更新,但不保证$el已插入文档

【beforeUpdate】

在实例挂载之后,再次更新实例(例如更新 data)时会调用该方法,此时尚未更新DOM结构

【updated】

在实例挂载之后,再次更新实例并更新完DOM结构后调用

【beforeDestroy】

在开始销毁实例时调用,此刻实例仍然有效

【destroyed】

在实例被销毁之后调用。此时所有绑定和实例指令都已经解绑,子实例也被销毁

【activated】

需要配合动态组件keep-live属性使用。在动态组件初始化渲染的过程中调用该方法

【deactivated】

需要配合动态组件keep-live属性使用。在动态组件初始化移出的过程中调用该方法

简单实例

下面写一个简单实例来更清楚地了解Vue实例内部的运行机制

<div id="example">{{message}}</div>
<script>
var vm = new Vue({
 el: '#example',
 data:{
 message:'match'
 },
 beforeCreate(){
 console.log('beforeCreate');
 },
 created(){
 console.log('created');
 },
 beforeMount(){
 console.log('beforeMount');
 },
 mounted(){
 console.log('mounted');
 },
 beforeUpdate(){
 console.log('beforeUpdate');
 },
 updated(){
 console.log('updated');
 //组件更新后调用$destroyed函数,进行销毁
 this.$destroy(); 
 },
 beforeDestroy(){
 console.log('beforeDestroy');
 },
 destroyed(){
 console.log('destroyed');
 },
})
</script>
基于Vue实例生命周期(全面解析)

以上这篇基于Vue实例生命周期(全面解析)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
添加JavaScript重载函数的辅助方法2
Jul 04 Javascript
jQuery中:empty选择器用法实例
Dec 30 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
Sep 15 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
javascrit中undefined和null的区别详解
Apr 07 Javascript
微信小程序云开发之使用云函数
May 17 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
从源码角度来回答keep-alive组件的缓存原理
Jan 18 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 #jQuery
angular或者js怎么确定选中ul中的哪几个li
Aug 16 #Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 #Javascript
label+input实现按钮开关切换效果的实例
Aug 16 #Javascript
bootstrap modal+gridview实现弹出框效果
Aug 15 #Javascript
vue实现点击图片放大效果
Aug 15 #Javascript
jquery获取链接地址和跳转详解(推荐)
Aug 15 #jQuery
You might like
PHP学习 运算符与运算符优先级
2008/06/15 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
JavaScript 实现??打印?理
2007/04/28 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
房地产融资计划书
2014/01/10 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
总经理年会致辞
2015/07/29 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书