笔记:vue-router路由拦截造成死循环,在做路由拦截的时候,一直出现死循环.

router的index.js文件路由配置

const router = new Router({
routes: [{path: '/login',name: 'login',component: Login,meta: {isShow: true}},{path: '/',component: Layout,redirect: '/home',meta: {title: "首页菜单"},children: [{ path: 'home', name: 'home', component: () => import('@/views/Hmoe'),meta: { title: "首页" } }],}]
})

一开始路由拦截是这样写的,但是这样的结果就是,在token存在的时候,可以直接访问login页面,但是实际项目中是,在token存在的时候不能可以访问login页面

router.beforeEach((to, from, next) => {if (!to.meta.isShow && !sessionStorage.getItem("token")) {return next('/login');}next();
})

根据项目的需求进行修改,然后就出现下图的报错,出现了死循环

router.beforeEach((to, from, next) => {if (sessionStorage.getItem("token")) {if (to.meta.isShow) {next('/home')} else {next()}} else {next('/login');}
})//检查代码
router.beforeEach((to, from, next) => {if (sessionStorage.getItem("token")) {if (to.meta.isShow) {console.log("1")next('/home')} else {console.log("2")next()}} else {console.log("3")next('/login');}
})

然后接着进行修改,就把浏览器弄崩溃了,此处省略一万字T_T.......

最后修改的代码,终于得到了最终的需要的结果

router.beforeEach((to, from, next) => {if (sessionStorage.getItem('token')) {//toekn存在if (to.path == '/login') {//token存在,并且是login页面next('/home');} else {//token存在,不是login页面next();}} else {if (to.path == '/login') {//token不存在,并且是login页面next();} else {//token不存在,不是login页面next('/login');}}
});

关于vue-router导航守卫,官方给出的解释是

出现无限循环是因为之前我没有弄清楚next()流程
因为每次跳转到一个路由的时候都会 触发 全局守卫 由于判断条件未改变 所以 一直循环

关于上面代码我自己的理解,就是当token存在的时候,判断页面是否是login页面,如果是就next到首页,不是就直接next。如果token不存在,页面为login就直接next,不是login就直接next到login页面,因为一开始在第一个else里面没有做判断,那么他的条件一直未改变,所以他会一直重复next到login才造成的死循环,后面写了判断之后就正常了......................................

vue-router路由拦截造成死循环相关推荐

  1. Vue Router 路由管理

    文章目录 Vue Router 路由管理 概述 安装 简单使用 定义2个组件 定义路由信息 支持路由 使用路由 动态路由 配置动态路由 配置404 限制动态参数 嵌套路由 命名路由 编程式导航 简单使 ...

  2. 【Vue】相关生态——Vue Router路由

    Vue Router路由 基本使用 带参数的动态路由匹配 捕获所有路由或404 Not found 路由 嵌套路由 编程式导航 重定向和别名 将props传递给路由组件 不同的历史模式 进阶 导航守卫 ...

  3. Vue Router路由常用功能总结

    Vue Router路由常用功能总结 一.前言 二.安装 1. vueCLI安装 2. npm安装 三.路由配置及使用: 1. 基本配置: 2. 动态路由: 3. 嵌套路由: 四.编程式的导航 五.重 ...

  4. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  5. Vue+axios(interceptors) 实现http拦截 + router路由拦截 (双拦截)+ 请求自带loading效果...

    axios interceptors 拦截器 //interceptors.js// vue axios配置 发起请求加载loading请求结束关闭loading // http request 请求 ...

  6. Vue | Vue Router 路由的使用

    文章目录 一.路由的基本使用 1.创建 Vue 项目并引入 vue-router 2.编写 Components 组件 3.编写路由文件 4.在主文件 Main.js 中引入路由 5.添加 route ...

  7. Vue.js 3.0 学习笔记(十一)Vue Router路由

    一.使用Vue Router 1.HTML页面使用路由 <!DOCTYPE html> <html> <head><meta charset="UT ...

  8. Vue Router 路由导航

    Vue Router 通过 Vue.js,我们已经用组件组成了我们的应用.当加入 Vue Router 时,我们需要做的就是将我们的组件映射到路由上,让 Vue Router 知道在哪里渲染它们. V ...

  9. Vue Router路由模式的区别 进程线程的区别

    Vue Router hash模式和history模式的区别 hash模式url里面永远带着#号,我们在开发当中默认就是hash模式. 那么什么时候需要用到history模式呢? 肯定是用户觉得#号太 ...

最新文章

  1. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
  2. Java Socket发送与接收HTTP消息简单实现
  3. 计算机书籍-实用Python机器学习预测分析
  4. linux安装教程6.3,CentOS 6.3安装教程(详细图解)
  5. 一文简单弄懂tensorflow_【TensorFlow】一文弄懂CNN中的padding参数
  6. 第1章 1.9计算机网络概述--OSI参考模型和网络安全
  7. 【NLP】一文了解基于深度学习的自然语言处理研究
  8. 何向南教授团队最新综述:对话推荐系统中的进展与未来挑战
  9. 口罩告急,全民互助!“口罩互助”小程序重磅上线!
  10. JSONObject,JSONArray,对象,数组互相转化
  11. 国家市场监管总局:低价倾销、大数据杀熟等价格违法行为将被罚
  12. 明略数据获 10 亿人民币 C 轮融资,华兴新经济基金、腾讯领投
  13. 高可用MySQL:构建健壮的数据中心
  14. 001.Spring | 依赖注入原理分析
  15. 双显卡笔记本安装linux,双显卡笔记本安装 Ubuntu 18.04 攻略
  16. c语言SPF算法代码,SPF 算法具体过程
  17. python爬虫学习,使用requests库来实现模拟登录4399小游戏网站。
  18. python超市进销存管理系统
  19. 云帮平台的设计架构详解
  20. unittest用例封装

热门文章

  1. 大智慧交易系统测试软件,趋势交易!大智慧测试最佳交易系统
  2. H5页面唤醒高德地图|百度地图App
  3. coderwhy前端学习笔记二
  4. Redis Hash命令大全
  5. 河北空气能热水器隆丰新能源科技有限公司石家庄超低温热泵
  6. Vue报错“Component name “School“ should always be multi-word”
  7. [2021CCPC 威海G] Shinyruo and KFC (下降幂多项式乘法+下降幂转普通幂+多项式多点求值)
  8. Oracle中加号和连接的使用
  9. 在selenium IDE上使用captureEntirePageScreenshot截图
  10. 是淘宝“秒杀”了淘客?是嗨淘。。。