详解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 相关文章推荐
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
jQuery中:password选择器用法实例
Jan 03 Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 Javascript
js实现将选中内容分享到新浪或腾讯微博
Dec 16 Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 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+oracle 分页类
2006/10/09 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
Django自定义认证方式用法示例
2017/06/23 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
HEMA英国:荷兰原创设计
2018/08/28 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
机关门卫岗位职责
2013/12/30 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
少儿节目主持串词
2014/04/02 职场文书
群众路线领导对照材料
2014/08/23 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
同事离别感言
2015/08/04 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript