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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
pjblog修改技巧汇总
Mar 12 Javascript
一实用的实现table排序的Javascript类库
Sep 12 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
Jul 04 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
AngularJS表单验证功能分析
May 26 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
angular *Ngif else用法详解
Dec 15 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
jquery 插件开发备注
2010/08/27 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
基于vue实现分页效果
2017/11/06 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
python基于socket实现网络广播的方法
2015/04/29 Python
python框架django基础指南
2016/09/08 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
Python对切片命名的实现方法
2018/10/16 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
postman和python mock测试过程图解
2020/02/22 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
EJB的角色和三个对象
2015/12/31 面试题
外企财务年会演讲稿
2014/01/03 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
公司职员入党自传书
2015/06/26 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书