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下利用fso判断文件是否存在的代码
Dec 11 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
Angular JS 生成动态二维码的方法
Feb 23 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
Sep 20 Javascript
JavaScript交换两个变量方法实例
Nov 25 Javascript
Vue 实现拨打电话操作
Nov 16 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 include的妙用,实现路径加密
2008/07/29 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
jQuery的学习步骤
2011/02/23 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python tkinter label 更新方法
2018/10/11 Python
python对象与json相互转换的方法
2019/05/07 Python
Python中函数参数匹配模型详解
2019/06/09 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
教师节活动主持词
2014/04/02 职场文书
孩子教育的心得体会
2014/09/01 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
会计师事务所实习证明
2014/11/16 职场文书
2015年党员承诺书
2015/01/21 职场文书
城管年度个人总结
2015/02/28 职场文书
基层党建工作简报
2015/07/21 职场文书
基于Python实现西西成语接龙小助手
2022/08/05 Golang