vue-router的钩子函数用法实例分析


Posted in Javascript onOctober 26, 2019

本文实例讲述了vue-router的钩子函数用法。分享给大家供大家参考,具体如下:

vue路由钩子大致可以分为三类:

1.全局钩子

主要包括beforeEach和aftrEach,

beforeEach函数有三个参数:

  • to:router即将进入的路由对象
  • from:当前导航即将离开的路由
  • next:Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。

afterEach函数不用传next()函数

这类钩子主要作用于全局,一般用来判断权限,以及以及页面丢失时候需要执行的操作,例如:

//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
  const role = localStorage.getItem('ms_username');
  if(!role && to.path !== '/login'){
    next('/login');
  }else if(to.meta.permission){
    // 如果是管理员权限则可进入,这里只是简单的模拟管理员权限而已
    role === 'admin' ? next() : next('/403');
  }else{
    // 简单的判断IE10及以下不进入富文本编辑器,该组件不兼容
    if(navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor'){
      Vue.prototype.$alert('vue-quill-editor组件不兼容IE10及以下浏览器,请使用更高版本的浏
      览器查看', '浏览器不兼容通知', {
        confirmButtonText: '确定'
      });
    }else{
      next();
    }
  }
})

2.单个路由里面的钩子

主要用于写某个指定路由跳转时需要执行的逻辑

{
          path: '/dashboard',
          component: resolve => require(['../components/page/Dashboard.vue'], resolve),
          meta: { title: '系统首页' },
          beforeEnter: (to, from, next) => {
           },
          beforeLeave: (to, from, next) => {
          }
        },

3.组件路由

主要包括 beforeRouteEnter和beforeRouteUpdate ,beforeRouteLeave,这几个钩子都是写在组件里面也可以传三个参数(to,from,next),作用与前面类似.

beforeRouteEnter(to, from, next) {
  next(vm => {
   if (
    vm.$route.meta.hasOwnProperty('auth_key') &&
    vm.$route.meta.auth_key != ''
   ) {
    if (!vm.hasPermission(vm.$route.meta.auth_key)) {
     vm.$router.replace('/admin/noPermission')
    }
   }
  })
 },

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
javascript延时重复执行函数 lLoopRun.js
Jun 29 Javascript
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
Apr 19 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
Dec 05 Javascript
node.js超时timeout详解
Nov 26 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
js实现单击图片放大图片的方法
Feb 17 Javascript
将form表单通过ajax实现无刷新提交的简单实例
Oct 12 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 #Javascript
layui实现给某一列加点击事件
Oct 26 #Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 #Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 #Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 #Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 #Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 #jQuery
You might like
php foreach、while性能比较
2009/10/15 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
js获取对象为null的解决方法
2013/11/21 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
python获取网页状态码示例
2014/03/30 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
基于Python闭包及其作用域详解
2017/08/28 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
主题酒店策划书
2014/01/28 职场文书
总会计师岗位职责
2014/02/19 职场文书
技术股东合作协议书
2014/12/02 职场文书
预备党员转正材料
2014/12/19 职场文书
老兵退伍感言
2015/08/03 职场文书
学困生转化工作总结
2015/08/13 职场文书
反邪教学习心得体会
2016/01/15 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL