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 操作下拉列表框实现代码
Feb 22 Javascript
jquery 3D球状导航的文章分类
Jul 06 Javascript
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
Apr 23 Javascript
ztree获取当前选中节点子节点id集合的方法
Feb 12 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
js获取浏览器和屏幕的各种宽度高度
Feb 22 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 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中常用编辑器推荐
2007/01/02 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Django在Model保存前记录日志实例
2020/05/14 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
Python爬虫教程知识点总结
2020/10/19 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
大学生职业生涯规划书前言
2014/01/09 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
学困生转化工作总结
2015/08/13 职场文书
信息技术课教学反思
2016/02/23 职场文书
Python实现简繁体转换
2021/06/07 Python