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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
node中socket.io的事件使用详解
Dec 15 Javascript
JS实现多张图片预览同步上传功能
Jun 23 Javascript
微信小程序商品详情页规格属性选择示例代码
Oct 30 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
Dec 23 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 05 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
改变Apache端口等配置修改方法
2008/06/05 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
python 图片验证码代码
2008/12/07 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
pywinauto自动化操作记事本
2019/08/26 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
EJB的几种类型
2012/08/15 面试题
毕业生自我鉴定
2013/12/04 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
碧霞祠导游词
2015/02/09 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
JavaScript实现队列结构过程
2021/12/06 Javascript