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 相关文章推荐
JavaScript 10件让人费解的事情
Feb 15 Javascript
基于Jquery的动态添加控件并取值的实现代码
Sep 24 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
js 实现数值的千分位及保存小数方法(推荐)
Aug 01 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
JS实现按钮颜色切换效果
Sep 05 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
JS前端广告拦截实现原理解析
Feb 17 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 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
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python自动发邮件脚本
2017/03/31 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python实现电脑自动关机
2018/06/20 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
django orm模块中的 is_delete用法
2020/05/20 Python
如何利用python读取micaps文件详解
2020/10/18 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
社区爱国卫生月活动总结
2014/06/30 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
安全先进个人材料
2014/12/29 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
部门主管竞聘书
2015/09/15 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python