时间:2021-05-26
如果在 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方法,在路由跳转前加载数据,在网上发现有博客说可以使用如下写法来解决这个问题:
这样写是毫无效果的, 经过仔细分析官方文档后发现next中的函数执行在页面mounted之后,所以这种方法时是不正确的。还不如直接将数据获取绑定到create钩子上。
正确写法如下:
这样就在跳转前获取到了数据,改写后完全解决了页面抖动的问题。
总结
以上所述是小编给大家介绍的vue 中 beforeRouteEnter 死循环的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
笔记:vue-router路由拦截造成死循环,在做路由拦截的时候,一直出现死循环.router的index.js文件路由配置constrouter=newRou
win7重装死循环的解决方法: 1、进入死循环,极有可能是系统镜像本身有问题,再者是U盘本身启动盘有问题,一般推断应该是软件的问题造成的。关闭安装系统的那台电
1、链接的死循环所有的搜索引擎对网站的死循环都是相当不友好的,做网站优化这个一定要尽可能的去规避,过多的死循环链接会把本来有限的蜘蛛带进无限循环的胡同里面,让蜘
前言有时候脚本中需要造个死循环,或者让程序一直运行下去,到某个条件方退出循环。对于熟悉C语言的猿人们来说,最简单的死循环应该这样写:while(1){//dos
在Java开发中常用到For循环,它对简化业务处理,提高效率,非常有帮助。但要防止程序算法中可能导致死循环的情况,而且有的死循环还不好察觉。比如下面这个例子,算