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 imgareaselect 使用利用js与程序结合实现图片剪切
Jul 30 Javascript
JavaScript中继承的一些示例方法与属性参考
Aug 07 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
Nov 29 Javascript
Vue中如何实现proxy代理
Apr 20 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
JSONObject与JSONArray使用方法解析
Sep 28 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运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
JS模拟多线程
2007/02/07 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python简单实现插入排序实例代码
2020/12/16 Python
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
教师师德承诺书
2014/03/26 职场文书
辅导员评语
2014/05/04 职场文书
银行求职自荐书
2014/06/25 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
财务经理岗位职责
2015/01/31 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android