vue 中 beforeRouteEnter 死循环的问题


Posted in Javascript onApril 23, 2019

如果在 vue 组件的 beforeRouteEnter 钩子函数中调用 API 请求,会出现循环执行的问题:

beforeRouteEnter(to, from, next) {
   login().then(() => {
    next({ name: 'home' });
  }).catch(() => {
   next();
   });
  },

上面的代码会出现无限循环调用的问题,可能是API还没有请求完成,又一次进入 router,调用了 beforRouterEnter 的原因,解决办法加一个变量,在调用API之前判断一下:

let request = false; 
  beforeRouteEnter(to, from, next) {
  if (request) {
   next();
   return;
  }
   request = true;
   login().then(() => {
   next({ name: 'home' });
  });
 },

ps:关于vue中beforeRouteEnter使用的误区

在写项目的时候偶然遇到了一个问题,在进入一个城市选择页面时,城市列表总是需要一秒后才能加载出来,出现了页面抖动,在解决这个问题时想到了路由中的beforeRouteEnter方法,在路由跳转前加载数据,在网上发现有博客说可以使用如下写法来解决这个问题:

vue 中 beforeRouteEnter 死循环的问题

这样写是毫无效果的, 经过仔细分析官方文档后发现next中的函数执行在页面mounted之后,所以这种方法时是不正确的。还不如直接将数据获取绑定到create钩子上。

正确写法如下:

vue 中 beforeRouteEnter 死循环的问题

这样就在跳转前获取到了数据,改写后完全解决了页面抖动的问题。

总结

以上所述是小编给大家介绍的vue 中 beforeRouteEnter 死循环的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JavaScript中的16进制字符(改进)
Nov 21 Javascript
javascript级联下拉列表实例代码(自写)
May 10 Javascript
JS获取当前日期和时间的简单实例
Nov 19 Javascript
js中arguments的用法(实例讲解)
Nov 30 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
Nov 13 Javascript
javascript鼠标右键菜单自定义效果
Dec 08 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
jquery延迟对象解析
Oct 26 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
Aug 25 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 #Javascript
vue watch关于对象内的属性监听
Apr 22 #Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 #Javascript
对于防止按钮重复点击的尝试详解
Apr 22 #Javascript
Vue render函数实战之实现tabs选项卡组件
Apr 22 #Javascript
详解Vue依赖收集引发的问题
Apr 22 #Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 #Javascript
You might like
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python3实现Web网页图片下载
2016/01/28 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python运行其他程序的实现方法
2017/07/14 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
python算法题 链表反转详解
2019/07/02 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
flask 实现token机制的示例代码
2019/11/07 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
小学数学课后反思
2014/04/23 职场文书
学生操行评语大全
2014/04/24 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python