Vue使用路由钩子拦截器beforeEach和afterEach监听路由


Posted in Javascript onNovember 16, 2020

在路由跳转的时候,我们需要一些权限判断或者其他操作。这个时候就需要使用路由的钩子函数。

定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数。

总体来讲vue里面提供了三大类钩子,两种函数 1、全局钩子 2、某个路由的钩子 3、组件内钩子

两种函数:

1. router.beforeEach(function(to,form,next){}) /*在跳转之前执行*/

2. router.afterEach(function(to,form)}{}) /*在跳转之后判断*/

全局钩子函数

顾名思义,它是对全局有效的一个函数

// router.jsconst router = new Router({
 routes: [
  {
   path: '/',
   name: 'sideBar',
   component: sideBar,
   children:[
    {
     path:'/',
     name:'sort',
     component:sort
    },
    {
     path:'/addNewSort',
     name:'addNewSort',
     component:addNewSort
    },
    {
     path:'/notSend',
     name:'notSend',
     component:notSend
    },
    {
     path:'/sended',
     name:'sended',
     component:sended
    },
  }
 ]
})

router.beforeEach((to,from,next)=>{
 // console.log("to:",to);   // router即将进入的路由对象
 // console.log("from:",from); // 当前导航即将离开的路由
 // console.log("next:",next); // Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。
 if(to.name=='notSend'){
  next({
   name:'sort'
  })
  return
 }
 next()
})

export default router

某个路由的钩子函数

顾名思义,它是写在某个路由里头的函数,本质上跟组件内函数没有区别。

// router.jsconst router = new VueRouter({
 routes: [
  {
   path: '/login',
   component: Login,
   beforeEnter: (to, from, next) => {
    // ...
   },
   beforeLeave: (to, from, next) => {
    // ...
   }
  }
 ]
})

路由组件的钩子

可以在路由组件内直接定义以下路由导航钩子

// *.vuebeforeRouteEnter
beforeRouteUpdate (2.2 新增)
beforeRouteLeave

这里简单说下钩子函数的用法:它是和data,methods平级的。

beforeRouteLeave(to, from, next) {
  next()
},
beforeRouteEnter(to, from, next) {
  next()
},
beforeRouteUpdate(to, from, next) { // 用于相同路由组件的的参数更新
  next()
},
data:{},
method: {}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery选择器源码解读(三):tokenize方法
Mar 31 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
Oct 07 Javascript
Bootstrap 模态框(Modal)插件代码解析
Dec 21 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
详解JavaScript数组过滤相同元素的5种方法
May 23 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
js针对图片加载失败的处理方法分析
Aug 24 Javascript
微信小程序实现上传多张图片、删除图片
Jul 29 Javascript
Vue 修改网站图标的方法
Dec 31 Vue.js
小程序实现密码输入框
Nov 16 #Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 #Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 #Javascript
Vue中使用JsonView来展示Json树的实例代码
Nov 16 #Javascript
Vue 数据绑定的原理分析
Nov 16 #Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 #Javascript
Vue指令实现OutClick的示例
Nov 16 #Javascript
You might like
PHP新手上路(九)
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
《再见了,亲人》教学反思
2014/02/26 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
旷课检讨书范文
2015/01/27 职场文书
教师个人自我评价
2015/03/04 职场文书
学校运动会开幕词
2016/03/03 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
React配置子路由的实现
2021/06/03 Javascript
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android