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 相关文章推荐
Extjs Ajax 乱码问题解决方案
Apr 15 Javascript
javaScript 删除字符串空格多种方法小结
Oct 24 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
非常实用的js验证框架实现源码 附原理方法
Jun 08 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
vue基础之v-bind属性、class和style用法分析
Mar 11 Javascript
全面分析JavaScript 继承
May 30 Javascript
详解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
flash用php连接数据库的代码
2011/04/21 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
javascript css float属性的特殊写法
2008/11/13 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
js实现密码强度检验
2017/01/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
python 内置函数filter
2017/06/01 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
业务经理的岗位职责
2013/11/16 职场文书
销售副总经理岗位职责
2013/12/11 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
搞笑爱情保证书
2014/04/29 职场文书
家长学校工作方案
2014/05/07 职场文书
职称评定个人总结
2015/03/05 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
MySQL约束超详解
2021/09/04 MySQL
利用JavaScript写一个简单计算器
2021/11/27 Javascript