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根据属性和index来查找属性值并操作
Jul 25 Javascript
JS获得图片alt信息的方法
Apr 01 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
Node 升级到最新稳定版的方法分享
May 17 Javascript
微信小程序实现默认第一个选中变色效果
Jul 17 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 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小偷的核心程序
2007/04/09 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中文件遍历的两种方法
2014/06/16 Python
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python列表解析操作实例总结
2020/02/26 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
5s推行计划书
2014/05/06 职场文书
教师学期个人总结
2015/02/11 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
tensorflow中的数据类型dtype用法说明
2021/05/26 Python