基于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 相关文章推荐
prototype Element学习笔记(篇二)
Oct 26 Javascript
JS提交并解析后台返回的XML的代码
Nov 03 Javascript
让FireFox支持innerText的实现代码
Dec 01 Javascript
jquery验证表单中的单选与多选实例
Aug 18 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
Jan 04 Javascript
Vue.js数据绑定之data属性
Jul 07 Javascript
前端学习——JavaScript原生实现购物车案例
Mar 31 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python中方法链的使用方法
2016/02/23 Python
Python3.6正式版新特性预览
2016/12/15 Python
高效使用Python字典的清单
2018/04/04 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python安装gdal的两种方法
2019/10/29 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
python scatter函数用法实例详解
2020/02/11 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
导游词之永泰公主墓
2019/12/04 职场文书