当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问大家一个小程序 跳转路由栈超过10层的比较好的解决方案?

田兴旺
2024-04-18

我有a页面是个退货列表页面,通过wx.navigateTo点击跳转到b页面 b页面是个退货申请页面,

b页面有个选择退货商品的按钮是需要通过wx.navigateTo跳转新页面c去选商品的,然后提交申请成功后,我用wx.redirectTo回到a页面,
这一套下去没什么问题,有问题的事,当我反复进行这个操作,在第六遍的时候,就会出现 在b页面选择退货商品时,无法通过wx.navigateTo跳转新页面c去选商品,点了也没反应,

请问这种限制10层路由栈的情况,应该怎么解决比较好?又不能影响用户正常返回操作

共有4个答案

小牛23005
2024-04-18

微信小程序有 10 层限制是因为默认的渲染引擎每一个页面都创建一个 webview,开销比较大,如果使用 skyline 渲染引擎就没有这个限制

吕树
2024-04-18

提交完申请直接回退两层不就回到a了吗?为什么要redirectTo

邹海超
2024-04-18

以uniapp为例,对navigateTo方法进行二次封装,伪代码如下

最好的办法还是在产品需求上给优化掉

function navigateTo (url, params) {    const length = getCurrentPages().length;    if(length >= 10) {        uni.redirectTo({            url: url        })    } else {        uni.navigateTo({            url: url        })    }}

相关文章:

wx.navigateTo ,跳转超过10次怎么点不动的解决办法。
小程序突破10层路由方案
微信小程序页面栈超过【10层】之后无法打开其他页面原因 _
解决小程序路由超过10层限制

景英杰
2024-04-18

小程序中路由栈深度的限制确实可能会带来一些困扰。针对你所描述的问题,有几种可能的解决方案:

1. 重用页面

  • 理由:避免频繁创建新页面实例,减少路由栈深度。
  • 实现:使用 wx.redirectTo 代替 wx.navigateTowx.redirectTo 会关闭当前页面,跳转到应用内的某个页面,这样就不会增加路由栈的深度。

2. 合并页面

  • 理由:将多个页面合并为一个页面,减少跳转次数。
  • 实现:将 b 页面和 c 页面合并为一个页面,通过页面内导航或组件切换来展示不同内容。

3. 使用页面生命周期函数

  • 理由:通过页面生命周期函数,在页面卸载前清理数据,避免内存泄漏。
  • 实现:在页面的 onUnloadonHide 生命周期函数中,清理页面数据,确保在重新进入页面时能够正常加载。

4. 自定义导航

  • 理由:完全自定义导航流程,不受小程序路由栈限制。
  • 实现:使用自定义组件和视图层渲染来模拟页面跳转,而不是使用小程序的 wx.navigateTowx.redirectTo 等方法。

5. 提示用户

  • 理由:在达到路由栈深度限制时,提示用户返回上一页面或减少连续操作。
  • 实现:在关键位置添加逻辑判断,当用户尝试进行可能导致路由栈过深的操作时,弹出提示框,引导用户正确操作。

6. 优化用户体验

  • 理由:避免不必要的跳转,优化用户操作流程。
  • 实现:重新评估页面结构和交互设计,减少不必要的页面跳转,提升用户体验。

示例

假设你选择重用页面,那么可以在 b 页面选择退货商品时,使用 wx.redirectTo 回到 a 页面,而不是使用 wx.navigateTo 跳转到新页面 c。

// b 页面选择退货商品时wx.redirectTo({  url: '/pages/a/a' // 回到 a 页面});

选择哪种解决方案取决于你的具体需求和用户体验考量。在实际应用中,可能需要结合多种方法来达到最佳效果。

 类似资料:
  • 我发现我的微信小程序首页,会偶尔出现页面不停地闪烁刷新的问题,它不是必现的问题,可能好几天偶尔出现一次,我排查了代码,就算是直接用定时器每一秒执行 this.onload() 也只是页面数据在重载, 我遇到的问题,是整个页面都在刷新,就像网页被人不停的在按f5一样,不知道为什么会导致这种问题出现?

  • 我这里有个49%宽度 高度为200px的容器,里面是一个多张图片的轮播图,这里的轮播图片,我想让它宽度百分之百适配容易宽度,高度则自适应,我因为一些bug问题,不能使用小程序的mode="widthFix" 请问除了用js,我能怎么写?

  • let arr1 = [333,555,222] let arr2 = [100,200,300] arr1 和 arr2 中的每项是对应关系, 请问如何比较 arr1中 最大值的那项,必须对应arr2中的最小值 意思就是说,按正常情况,arr1和arr2的对应关系应为: let arr1 = [333,555,222] let arr2 = [200,100,300] 请问如何去写判断?实际场景

  • 问题内容: 您推荐哪种JavaScript压缩程序? 问题答案: UglifyJS2,由jQuery项目使用。

  • 本文向大家介绍微信小程序出现wx.navigateTo页面不跳转问题的解决方法,包括了微信小程序出现wx.navigateTo页面不跳转问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了微信小程序出现wx.navigateTo页面不跳转问题的解决方法。分享给大家供大家参考,具体如下: 今天在做微信小程序的时候,做的商品购买流程。流程是这样的: 商品展示-->商品详情-->下单页

  • 尝试设置react路由时出现一些奇怪的错误 这是我的主index.js文件 我得到的错误是 不知道为什么