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 相关文章推荐
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
Aug 22 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
node.js学习之base64编码解码
Oct 21 Javascript
浅谈jQuery before和insertBefore的区别
Dec 04 Javascript
vue-ajax小封装实例
Sep 18 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
解决vue v-for 遍历循环时key值报错的问题
Sep 06 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
小程序实现密码输入框
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实现读取超大文件的方法
2014/07/28 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
法院实习人员自我鉴定
2013/09/26 职场文书
服装设计专业毕业生推荐信
2013/11/09 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
分家协议书
2014/04/21 职场文书
我的祖国演讲稿
2014/05/04 职场文书
自主招生教师推荐信
2014/05/10 职场文书
中秋晚会策划方案
2014/06/12 职场文书
暑期培训班招生方案
2014/08/26 职场文书
体育运动会广播稿
2014/10/05 职场文书
会计专业自荐信范文
2015/03/05 职场文书
深入理解python多线程编程
2021/04/18 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL