详解vue beforeEach 死循环问题解决方法


Posted in Javascript onFebruary 25, 2020

什么是beforeEach?

beforeEach 是一个vue-router的路由导航钩子,一般我用它做路由守卫。

什么是路由守卫?

路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。对此,vue-route 提供的beforeRouteUpdate可以方便地实现导航守卫(navigation-guards)。导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧。**

文档地址:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html

举个例子,当我们没有登录的时候,跳转到登录页面。如果登录了,则正常跳转。

下面我们来看下死循环代码。

export const router = new Router(RouterConfig);
router.beforeEach((to, from, next) => {
  let token = sessionStorage.getItem('token');
  if (token) {
    next();
  } else {
    next({path: '/p404'})
  }
});

当 token 不存在于 session 中,跳转到 /p404,此时路由改变,再次进行判断,则又跳转到 /404,由此造成了死循环。在代码中进行一次判断,如果跳到 p404了,就让它安心的进路由吧。修改后代码如下。

export const router = new Router(RouterConfig);
router.beforeEach((to, from, next) => {
  let token = sessionStorage.getItem('token');
  if (token) {
    next();
  } else {
    if (to.path == '/p404') {
      next();
    } else {
      next({path: '/p404'})
    }
  }
});

到此这篇关于详解vue beforeEach 死循环问题解决方法的文章就介绍到这了,更多相关vue beforeEach 死循环 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
一个XML格式数据转换为图表的例子
Feb 09 Javascript
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
Apr 13 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
jQuery的框架介绍
May 11 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
利用vscode编写vue的简单配置详解
Jun 17 Javascript
JavaScript表单即时验证 验证不成功不能提交
Aug 31 Javascript
Vue实现简易计算器
Feb 25 #Javascript
js+canvas实现简单扫雷小游戏
Jan 22 #Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 #Javascript
es6中let和const的使用方法详解
Feb 24 #Javascript
jquery制作的移动端购物车效果完整示例
Feb 24 #jQuery
jquery实现的放大镜效果示例
Feb 24 #jQuery
JS数组扁平化、去重、排序操作实例详解
Feb 24 #Javascript
You might like
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
请离开include_once和require_once
2013/07/18 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
跟我学习javascript的Date对象
2015/11/19 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
详解python持久化文件读写
2019/04/06 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
New delete 与malloc free 的联系与区别
2013/02/04 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
行政管理专业求职信
2014/07/06 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
暑假生活随笔
2015/08/15 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
关于MySQL中的 like操作符详情
2021/11/17 MySQL