详解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 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
JQuery表格内容过滤的实现方法
Jul 05 Javascript
javascript连续赋值问题
Jul 08 Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
js每隔两秒输出数组中的一项(实例)
May 28 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
Mar 08 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
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 compact 通过变量创建数组
2016/11/15 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
Python中过滤字符串列表的方法
2020/12/22 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
环保公益广告语
2014/03/13 职场文书
政治表现评语
2014/05/04 职场文书
2014年底工作总结
2014/12/15 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python