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使用activex控件的代码
Jan 27 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
jquery封装的对话框简单实现
Jul 21 Javascript
innerHTML中标签可以换行的方法汇总
Aug 14 Javascript
js计算文本框输入的字符数
Oct 23 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
Aug 25 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
May 17 Javascript
vue之将echart封装为组件
Jun 02 Javascript
如何利用js在两个html窗口间通信
Apr 27 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
JQuery开发的数独游戏代码
2010/10/29 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
vue+node+webpack环境搭建教程
2017/11/05 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python深入学习之对象的属性
2014/08/31 Python
python获取本地计算机名字的方法
2015/04/29 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python机器学习实战之K均值聚类
2017/12/20 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
会计专业自我鉴定
2014/02/10 职场文书
保险专业自荐信范文
2014/02/20 职场文书
销售员试用期自我评价
2014/09/15 职场文书
档案管理员岗位职责
2015/02/12 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python