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 相关文章推荐
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
javascript Discuz代码中的msn聊天小功能
May 25 Javascript
JavaScript 基于原型的对象(创建、调用)
Oct 16 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
JS实现CheckBox复选框全选全不选功能
May 06 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
jQuery中text() val()和html()的区别实例详解
Jun 28 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
vue 解决循环引用组件报错的问题
Sep 06 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
Jun 05 Javascript
javascript实现前端分页效果
Jun 24 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
PHP CURL使用详解
2019/03/21 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
2019/05/02 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
python开发简易版在线音乐播放器
2017/03/03 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Django 路由控制的实现代码
2018/11/08 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
2014年清明节寄语
2014/04/03 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
三孔导游词
2015/02/05 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
大学军训心得体会800字
2016/01/11 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
python高温预警数据获取实例
2022/07/23 Python