详解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与webservice的通信实现代码
Dec 25 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
Feb 26 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
微信小程序转化为uni-app项目的方法示例
May 22 Javascript
JavaScript中变量提升和函数提升的详解
Aug 07 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
python 接收处理外带的参数方法
2018/12/03 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
python集合能干吗
2020/07/19 Python
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
普天C++笔试题
2016/03/20 面试题
运动会广播稿400字
2014/01/25 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
上课说话检讨书500字
2014/11/01 职场文书
淘宝好评语句大全
2014/12/31 职场文书
义诊活动通知
2015/04/24 职场文书
酒店员工手册范本
2015/05/14 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
vue2实现provide inject传递响应式
2021/05/21 Vue.js
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
Nginx进程调度问题详解
2021/09/25 Servers