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 验证表单(form)中的单选(radio)值
Sep 08 Javascript
js 3秒后跳转页面的实现代码
Mar 10 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
JS设置CSS样式的方式汇总
Jan 21 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
js实现3D图片环展示效果
Mar 09 Javascript
微信小程序页面间通信的5种方式
Mar 31 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
彻底搞懂JavaScript中的apply和call方法(必看)
Sep 18 Javascript
JS 中document.write()的用法和清空的原因浅析
Dec 04 Javascript
8 个有用的JS技巧(推荐)
Jul 03 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之第八天
2006/10/09 PHP
支持oicq头像的留言簿(一)
2006/10/09 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
javascript 一些用法小结
2009/09/11 Javascript
window.location.hash 属性使用说明
2010/03/20 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python中模块string.py详解
2017/03/12 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python实现kMeans算法
2017/12/21 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
windows下python安装pip方法详解
2020/02/10 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
环保倡议书400字
2014/05/15 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
开学随笔
2015/08/15 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript