基于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下操作css的float属性的特殊写法
Aug 22 Javascript
基于jQuery试卷自动排版系统
Jul 18 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 Javascript
javascript判断回文数详解及实现代码
Feb 03 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
May 27 Javascript
如何理解Vue的作用域插槽的实现原理
Aug 19 Javascript
基于express中路由规则及获取请求参数的方法
Mar 12 Javascript
浅谈React高阶组件
Mar 28 Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
通过自学python能找到工作吗
2020/06/21 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
药店促销活动总结
2014/07/10 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
MySQL数据库事务的四大特性
2022/04/20 MySQL
vue实现在data里引入相对路径
2022/06/05 Vue.js