uni-app uni.navigateTo 页面栈堆积过多,导致页面不能跳转新页面

uni-app uni.navigateTo 页面栈堆积过多,导致页面不能跳转新页面

测试过的手机:

所有

示例代码:

··· uni.navigateTo({ url:‘index’ }) ···


## 操作步骤:

···
uni.navigateTo({
url:'index'
})
···

预期结果:

当页面栈过多,每当有一个页面进来,删除最前面的一个

实际结果:

没有删除最前面的一个,导致没有出现新的页面

bug描述:

uni.navigateTo 页面栈堆积过多,导致页面不能跳转新页面


| 信息类别     | 信息内容       |
|--------------|----------------|
| 产品分类     | uniapp/App     |
| PC开发环境   | Windows        |
| PC版本号     | 1903           |
| HBuilderX    | 正式           |
| HBuilderX版本| 3.2.16         |
| 手机系统      | 全部           |
| 手机系统版本  | iOS 15         |
| 手机厂商      | 苹果           |
| 手机机型      | 区安监部       |
| 页面类型      | vue            |
| vue版本       | vue2           |
| 打包方式      | 云端           |
| 项目创建方式  | HBuilderX      |

更多关于uni-app uni.navigateTo 页面栈堆积过多,导致页面不能跳转新页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app uni.navigateTo 页面栈堆积过多,导致页面不能跳转新页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的页面栈溢出问题。在 uni-app 中,uni.navigateTo 会不断向页面栈添加新页面,当页面栈深度达到限制(通常为10层)后,将无法继续跳转。

解决方案:

  1. 使用 uni.redirectTo 替代
    如果不需要保留当前页面,使用 uni.redirectTo 关闭当前页面并跳转,避免栈深度增加。

  2. 手动管理页面栈
    在跳转前判断栈深度,超过阈值时使用 uni.redirectTo

    const pages = getCurrentPages();
    if (pages.length >= 10) {
      uni.redirectTo({ url: 'index' });
    } else {
      uni.navigateTo({ url: 'index' });
    }
回到顶部