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 相关文章推荐
基于prototype扩展的JavaScript常用函数库
Nov 30 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
Dec 13 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
js关于命名空间的函数实例
Feb 05 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
浅析JS中回调函数及用法
Jul 25 Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 Javascript
js实现橱窗展示效果
Jan 11 Javascript
es6函数name属性功能与用法实例分析
Apr 18 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 Javascript
vue首次渲染全过程
Apr 21 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
德劲1103的维修打理经验
2021/03/02 无线电
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
在Python中使用__slots__方法的详细教程
2015/04/28 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
python实现拼接图片
2020/03/23 Python
python软件都是免费的吗
2020/06/18 Python
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
你对IPv6了解程度
2016/02/09 面试题
电子商务个人自荐信
2013/12/12 职场文书
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
银行求职自荐书
2014/06/25 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers