Vue组件和Route的生命周期实例详解


Posted in Javascript onFebruary 10, 2018

先讲点实际的

实用点的钩子:

Created:vue实例被生成后的一个生命周期钩子函数。(页面初始化数据加载一般写这里);
beforeCreate:给个loading界面 created撤销loading;
beforeDestory:你确认删除XX吗?
destoryed:当前组件已被删除,清空相关内容

关于Vue组件生命周期,翻译后图示:

Vue组件和Route的生命周期实例详解

module.exports = { 
    //props: ['父组建传的值'], 
    data:function(){ 
      lifecycle.push("data"); 
      return { 
        msg: '各个阶段,可以查看控制台输出,message from my-views', 
        title:'my_views', 
        lifecycle: lifecycle 
      } 
    }, 
    //这里是route的生存周期 
    route:{ 
      //waitForData: true, // 数据加载完毕后再切换试图,也就是 点击之后先没反应,然后数据加载完,再出发过渡效果 
      canActivate:function(transition){ 
        // canActivate阶段,可以做一些用户验证的事情(是否可以被激活) 
        // 在验证阶段,当一个组件将要被切入的时候被调用。 
      }, 
      activate:function(transition){ 
                // 在激活阶段被调用,在 activate 被断定( resolved ,指该函数返回的 promise 被 resolve )。用于加载和设置当前组件的数据。(激活) 
        //this.$root.$set('header',this.title); 
        transition.next(); 
        //此方法结束后,api会调用afterActivate 方法 
        //在aftefActivate中 会给组件添加 $loadingRouteData 属性 并设置为true 
      }, 
      data: function(transition) { 
        var _this = this; 
        // 在激活阶段被调用,在 activate 被断定( resolved ,指该函数返回的 promise 被 resolve )。用于加载和设置当前组件的数据 
        // 说明之前请求过 则不用再请求了 
        if(this.$root.myViewsData){ 
          this.$data = this.$root.myViewsData; 
          transition.next(); 
          console.log('已经请求过了不再请求数据'); 
          return; 
        } 
        //将数据同步到根节点 
        this.$root.myViewsData = this.$data; 
        setTimeout(function(){ 
          //这里 _this.$loadingRouteData 是 true 
          transition.next({msg:'加载后的数据'}); 
          //在调用完transition.next 后,_this.$loadingRouteData 为 false 
        }.bind(this),4000); 
      }, 
      canDeactivate:function(transition){ 
        // 在验证阶段,当一个组件将要被切出的时候被调用。(是否可以被禁用) 
      }, 
      deactivate: function (transition) { 
        // 在激活阶段,当一个组件将要被禁用和移除之时被调用。(禁用) 
      } 
    }, 
    beforeCreate:function(){ 
      // 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。 
    }, 
    created:function(){ 
      // 实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。 
    }, 
    beforeCreate:function(){ 
      // 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。 
    }, 
    mounted:function(){ 
      // el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。 
    }, 
    beforeUpdate: function(){ 
      // 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。  
      // 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。 
    }, 
    updated: function(){ 
      // 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。 
      //当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。 
    }, 
    // <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。 
    activated: function(){ 
      // keep-alive 组件激活时调用。 
    }, 
    deactivated: function(){ 
      // keep-alive 组件停用时调用。 
    }, 
    beforeDestroy:function(){ 
      // 实例销毁之前调用。在这一步,实例仍然完全可用。 
    }, 
    destroyed:function(){ 
      // Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 
    } 
  }

总结

以上所述是小编给大家介绍的Vue组件和Route的生命周期详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
Mar 08 Javascript
Jquery中获取iframe的代码
Jan 11 Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
May 06 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
Sep 17 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
Vue导出json数据到Excel电子表格的示例
Dec 04 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
May 16 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
Vue2.0用户权限控制解决方案的示例
Feb 10 #Javascript
vue.js 微信支付前端代码分享
Feb 10 #Javascript
详解如何实现一个简单的 vuex
Feb 10 #Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
Feb 10 #Javascript
使用 vue.js 构建大型单页应用
Feb 10 #Javascript
javascript中的隐式调用
Feb 10 #Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 #Javascript
You might like
php session 检测和注销
2009/03/16 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
php实现用户登陆简单实例
2017/04/04 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
javascript动画浅析
2012/08/30 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
js实现登录验证码
2016/12/22 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python进行统计建模
2020/08/10 Python
给校长的建议书
2014/03/12 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
详解nginx location指令
2022/01/18 Servers
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
nginx之queue的具体使用
2022/06/28 Servers