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 相关文章推荐
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
js 浏览器事件介绍
Mar 30 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
JavaScript 学习笔记之变量及其作用域
Jan 14 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
Javascript的表单验证-提交表单
Mar 18 Javascript
深入理解JavaScript中的浮点数
May 18 Javascript
Vue 仿百度搜索功能实现代码
Feb 16 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
Vue中 axios delete请求参数操作
Aug 25 Javascript
three.js 实现露珠滴落动画效果的示例代码
Mar 01 Javascript
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递归调用与静态变量使用
2012/12/16 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
详解Python当中的字符串和编码
2015/04/25 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
为数据库创建索引都需要注意些什么
2012/07/17 面试题
大二自我鉴定
2014/01/31 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
公司委托书格式
2014/08/01 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
业务内勤岗位职责
2015/04/13 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript