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 相关文章推荐
jQuery 渐变下拉菜单
Dec 15 Javascript
jQuery 技巧小结
Apr 02 Javascript
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
基于jquery的可多选的下拉列表框
Jul 20 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
Sep 23 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
Oct 26 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
angularjs使用div模拟textarea文本框的方法
Oct 02 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
js 小数取整的函数
2010/05/10 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
移动端js图片查看器
2016/11/17 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
三种Webpack打包方式(小结)
2018/09/19 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
个人自我鉴定写法
2013/11/30 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
计划生育诚信协议书
2014/11/02 职场文书
师范生见习报告范文
2014/11/03 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
JavaScript执行机制详细介绍
2021/12/06 Javascript