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 相关文章推荐
jquery ajax提交表单数据的两种方式
Nov 24 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
浅谈javascript的Touch事件
Sep 27 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
jQuery中的siblings用法实例分析
Dec 24 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
Dec 29 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
JavaScript中filter的用法实例分析
Feb 27 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中文乱码
2009/11/26 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php实现的SESSION类
2014/12/02 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
js微信支付实现代码
2016/12/22 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
vue实现局部刷新的实现示例
2019/04/16 Javascript
JS实现小星星特效
2019/12/24 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
如何在python中判断变量的类型
2020/07/29 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
校园十佳歌手策划书
2014/01/22 职场文书
业务内勤岗位职责
2014/04/30 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
南湾猴岛导游词
2015/02/09 职场文书
学校党支部承诺书
2015/04/30 职场文书
指导教师推荐意见
2015/06/05 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
MySQL创建定时任务
2022/01/22 MySQL