详解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 相关文章推荐
网易JS面试题与Javascript词法作用域说明
Nov 09 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
js 浏览器事件介绍
Mar 30 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
May 11 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
Prototype框架详解
Nov 25 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
js设置随机切换背景图片的简单实例
Nov 12 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 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
JavaScript中链式调用之研习
2011/04/07 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
token 机制和实现方式
2020/12/15 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
跟老齐学Python之Python安装
2014/09/12 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Python----数据预处理代码实例
2019/03/20 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
环境科学毕业生自荐信
2013/11/21 职场文书
机关出纳岗位职责
2014/04/03 职场文书
安全生产计划书
2014/05/04 职场文书
企业宗旨标语
2014/06/10 职场文书
爱护公物标语
2014/06/24 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle