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

javascript - 萌新求助,微信小程序如何删除页面栈?

巩子实
2024-04-15

都知道微信小程序最多10个页面栈并提供了几个api reLaunch redirectTo

但是拼多多或者京东的商品详情页面里面点击“推荐商品”无限递归跳转商品详情页面,哪怕跳100层都没问题,然后点击左上角的返回,返回8层左右前面选的商品页面都没了,这种是怎么做到的呢,大佬们求救

我公司有个需求

首页-商品详情-(redirectTo确认-redirectTo支付-redirectTo支付结果)- 订单列表 - 订单详情

然后订单详情里面有个再次购买, 又会跳到商品详情重复这个流程 直到10层页面栈报错走不动了,我想实现京东或者拼多多的, 超出10层 前面的几个就自动删掉

共有2个答案

陶智
2024-04-15

返回已有的页面

花飞扬
2024-04-15

微信小程序页面栈的管理确实是一个需要关注的问题,特别是当涉及到深度跳转和返回时。微信小程序本身限制了页面栈的最大深度为10层,超过这个深度将不再允许新的页面入栈。

对于你的需求,一个可行的解决方案是手动管理页面栈。你可以使用getCurrentPages()函数来获取当前页面栈的信息,然后根据需要删除一些页面。但请注意,getCurrentPages()并不提供直接删除页面栈中某个页面的功能,你只能通过跳转的方式来达到删除页面栈中页面的效果。

对于你的需求,一个可能的实现方式是:

  1. 当页面栈深度超过某个阈值(例如8)时,你可以监听页面栈的变化,并在新的页面入栈前,先使用redirectToreLaunch跳转到一个中间页面,然后从那个中间页面再跳转到目标页面。这样,中间的几个页面就会被从页面栈中移除。
  2. 对于你的具体流程,可以在每次进入新的商品详情页面或支付页面时,都检查当前页面栈的深度。如果深度超过阈值,就先跳转到中间页面,然后再从中间页面跳转到目标页面。

示例代码如下:

// 假设你的页面栈深度阈值为8const MAX_STACK_DEPTH = 8;// 在需要跳转的地方function navigateTo(url) {  const pages = getCurrentPages();  if (pages.length > MAX_STACK_DEPTH) {    // 如果页面栈深度超过阈值,先跳转到中间页面    wx.redirectTo({      url: '/path/to/middle/page'    });    // 然后再从中间页面跳转到目标页面    setTimeout(() => {      wx.redirectTo({        url: url      });    }, 500);  } else {    // 如果页面栈深度没有超过阈值,直接跳转到目标页面    wx.redirectTo({      url: url    });  }}

请注意,这只是一种可能的解决方案,具体的实现可能需要根据你的具体需求进行调整。另外,由于微信小程序页面栈的限制,这种方案并不能完全避免页面栈溢出的问题,但它可以在一定程度上缓解这个问题。如果你的应用需要频繁地进行深度跳转和返回,可能需要考虑其他的技术方案,例如使用Webview组件或者在服务器端进行页面管理。

 类似资料:
  • 本文向大家介绍微信小程序 页面传值详解,包括了微信小程序 页面传值详解的使用技巧和注意事项,需要的朋友参考一下 微信小程序 页面传值详解 一. 跨页面传值. 1 . 用 navigator标签传值或 wx.navigator, 比如 这里将good_id=16 参数传入detail页面, 然后detail页面的 onload方法内接受. 如果需要传多个参数, 用 & 链接即可 如果要传 数组, 字

  • 自己仿照大佬的代码写的,顶部和左侧固定,右侧可以左右滑动,但是如果斜着拉动表格,表格会上下左右同时滚动,效果图如下: 如果修改对应的代码,虽然斜着拉动表格不会同时滚动了,但是表头也无法固定了。。。纠结了好久,都快查秃了。。也没想到好的解决办法。效果图如下: 期望实现本图效果,然后表头可以固定, 还有一个问题,真机测试的时候,如果左右拉动,表头的名称单元格的内容“名称”会闪动。 希望大佬可以指出问题

  • 本文向大家介绍微信小程序的分类页面制作,包括了微信小程序的分类页面制作的使用技巧和注意事项,需要的朋友参考一下 微信小程序实的分类页面制作 先上效果图。 这个界面布局难度不是很大,css基础好的,很快就实现了,分类界面,左边是一级目录,右边是一级目录对应的二级目录,根据 这个需求,我们数据设计的结构一定是数组嵌套数组,第一个数组包含一级目录数据,嵌套的数组包含的是二级目录的数据。 代码的实现 js

  • @megalo/target 的 platform 设置成 wechat,mini-css-extract-plugin 提取文件后缀改成微信小程序的 wxss。 const createMegaloTarget = require( '@megalo/target' ) const compiler = require( '@megalo/template-compiler' ) const M

  • 1、第三方应用授权对接 ​ 之前对接小程序只提供了开发者授权的方式,这种方式的弊端是,如果客户同时对接了其他的系统,会产生access token冲突,导致消息发不过来。因此新增第三方平台授权的方式,客户可以在智齿后台直接扫二维码授权对接。流程如下: 1.1、选择授权方式,进入配置页 点击绑定小程序时选择授权方式,默认推荐第三方平台授权: 点击确定进入配置页: 1.2、扫描授权二维码 点击“微信公

  • 微信小程序配置 1.微信小程序使用流程 具体配置参考相关教程 uni-app编译版参考教程 uni-app编译版 uni-app开源版参考教程 uni-app开源版 2.微信小程序下载 打开后台-小程序-微信小程序-小程序源码下载,注:针对已购买小程序的客户,可选"编译版""开源版""更新包" 3.微信小程序装修 1.首页导航: (导航能够有效帮助粉丝跳转到各个关键页面,是整个店铺的“指南针”。)