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 相关文章推荐
处理文本部分内容的TextRange对象应用实例
Jul 29 Javascript
JavaScript中输出标签的方法
Aug 27 Javascript
jQuery增加自定义函数的方法
Jul 18 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
js select下拉联动 更具级联性!
Apr 17 Javascript
基于AngularJS实现表单验证功能
Jul 28 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
layui中layer前端组件实现图片显示功能的方法分析
Oct 13 Javascript
JS实现横向跑马灯效果代码
Apr 20 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目录管理函数小结
2008/09/10 PHP
PHP获取url的函数代码
2011/08/02 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
JS 控件事件小结
2012/10/31 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
Python中运算符"=="和"is"的详解
2016/10/08 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
在python 中实现运行多条shell命令
2019/01/07 Python
对python中各个response的使用说明
2020/03/28 Python
运动会入场式解说词
2014/02/18 职场文书
信息管理专业自荐书
2014/06/05 职场文书
委托书的写法
2014/09/16 职场文书
个人查摆剖析材料
2014/10/16 职场文书
理想国读书笔记
2015/06/25 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
Vue router配置与使用分析讲解
2022/12/24 Vue.js