博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序5层路由限制,踩坑笔记
阅读量:7001 次
发布时间:2019-06-27

本文共 920 字,大约阅读时间需要 3 分钟。

最近的项目在做微信小程序。然后被提了一个很奇怪的单,当用户在界面内多次跳转,跳转一定次数后,路由跳转会失效。 我们项目中使用了mpvue,路由跳转用的是vue-router,也没看到报错什么的。经过查阅相关资料之后发现,小程序的history栈有限制,限制在5层。之后如果继续调用wx.navigateTo方法就会失效,this.$router.push底层就是调用的这个方法,而wx.redirectTo方法没有这个限制。

从文档里面可以看出wx.navigateTo是有一个失败回调的,所以解决方案就是。当histroy栈满了之后,调用wx.navigateTo会失败,那么在失败回调里面调用wx.redirectTo,重新跳转

wx.navigateTo({    url: `http://yourUrl`,    fail: (err) => {      console.error(err)      wx.redirectTo({        url: `http://yourUrl`      })    }})复制代码

这个解决有个缺陷,就是 a --> b; b --> c; c --> d; d --> e; e --> f; f --> g;此时如果在g页面点返回,返回的并不是f页面,而是e页面,因为e页面才是第4层。

还有另一种解决方案,wx.reLaunch这个api可以把之前的路由history直接清空,然后将目标路由设置为第一级路由历史纪录。

wx.navigateTo({    url: `http://yourUrl`,    fail: (err) => {      console.error(err)      wx.reLaunch({        url: `http://yourUrl`      })    }})复制代码

这种解决方案的思路就是每次histroy栈存满之后就清空,然后重新开始存。缺陷是,每次重新开始时,后退操作就失效了,因为此时栈里只有一条纪录。

转载于:https://juejin.im/post/5bf22725e51d450cec7b4916

你可能感兴趣的文章
php排序算法
查看>>
在if里赋值要注意=和==的优先级,==优先于=
查看>>
Delphi xe7 up1 调用android振动功能
查看>>
激励自己的话
查看>>
IOS 实现界面本地化(国际化)
查看>>
陶哲轩实分析命题 11.10.7
查看>>
《陶哲轩实分析》引理17.2.4证明_导数的唯一性
查看>>
站立会议5
查看>>
python中的常用模块(2)
查看>>
登陆的键盘敲击事件
查看>>
执行计划基础 统计信息
查看>>
python MD5加密方法
查看>>
mysql连接jdbc查询代码
查看>>
SpringMVC10数据验证
查看>>
处理异常Error resolving template [/login], template might not exist or might not be accessible by......
查看>>
洛谷 P1147 连续自然数和 Label:等差数列
查看>>
线程间的同步和通信机制
查看>>
Python脚本实现值更新事件赋值过程记录日志监控
查看>>
[bzoj 1503][NOI 2004]郁闷的出纳员
查看>>
Java课程上机实验1_ConnectionManager
查看>>