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全部源代码
May 04 Javascript
setAttribute 与 class冲突解决
Feb 17 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
JS上传组件FileUpload自定义模板的使用方法
May 10 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
May 30 Javascript
vue实现整屏滚动切换
Jun 29 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 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下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php获取linux命令结果的实例
2017/03/13 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
react路由配置方式详解
2017/08/07 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
js对象数组和对象的使用实例详解
2019/08/27 Javascript
Python实现约瑟夫环问题的方法
2016/05/03 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
python数据化运营的重要意义
2019/11/25 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
如何利用python生成MD5并去重
2020/12/07 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
工程力学硕士生的自我评价范文
2013/11/16 职场文书
女大学生个人求职信
2013/12/09 职场文书
项目资料员岗位职责
2013/12/10 职场文书
给医务人员表扬信
2014/01/12 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
企业趣味活动方案
2014/08/21 职场文书
办公经费申请报告
2015/05/15 职场文书
加强党性修养心得体会
2016/01/21 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android