详解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 跨域访问解决方案
Feb 14 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
各情景下元素宽高的获取实现代码
Sep 13 Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
JavaScript数字和字符串转换示例
Mar 26 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
关于JSON与JSONP简单总结
Aug 16 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
通俗解释JavaScript正则表达式快速记忆
Aug 23 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
如何在PHP中生成随机数
2020/06/04 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
JS实现的A*寻路算法详解
2018/12/14 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
详解Python多线程
2016/11/14 Python
python实现FTP服务器服务的方法
2017/04/11 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
上学迟到的检讨书
2014/01/11 职场文书
李敖北大演讲稿
2014/05/24 职场文书
公司年夜饭通知
2015/04/25 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
python - asyncio异步编程
2021/04/06 Python
微信小程序实现录音Record功能
2021/05/09 Javascript