uni-app uni.reLaunch 跳转问题 首页原有首页没有关闭会不断增加首页节点

发布于 1周前 作者 itying888 来自 Uni-App

uni-app uni.reLaunch 跳转问题 首页原有首页没有关闭会不断增加首页节点

操作步骤:

  • 在其他页面返回首页 就会出现这样的问题

预期结果:

  • 把原来的 首页 全部都关闭了 不然会页面负载太高了 多次后 页面会崩溃

实际结果:

  • 实际不断的 增加 首页 页面

bug描述:

  • 自定义的 tabBar 在其他页面返回首页 就会出现这样的问题

图片

图片


### 表格
| 信息项       | 内容           |
|--------------|----------------|
| 产品分类     | uniapp/H5      |
| PC开发环境操作系统 | Windows        |
| PC开发环境操作系统版本号 | windows10      |
| HBuilderX类型 | 正式           |
| HBuilderX版本号 | 4.29           |
| 浏览器平台   | Chrome         |
| 浏览器版本   | 最新版本       |
| 项目创建方式 | HBuilderX      |

2 回复

感谢反馈,提供个复现工程吧,普通的 tabbar 无此问题,具体看下你到用法


在uni-app中,uni.reLaunch 是一个用于关闭所有非 tabBar 页面并跳转到应用内的某个页面的 API。这个 API 通常用于需要重新加载页面或者清空页面栈的场景。然而,如果使用不当,可能会导致页面节点不断增加的问题,特别是在频繁跳转回首页时。

以下是一个关于如何使用 uni.reLaunch 跳转到首页并避免首页节点不断增加的代码案例:

首先,确保你的首页是 tabBar 页面之一。在 pages.json 中配置 tabBar 页面:

{
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      // 其他 tabBar 页面
    ]
  }
}

接下来,在你的代码中,当需要跳转到首页并清空页面栈时,使用 uni.reLaunch

// 假设在某个页面的方法中需要跳转到首页
methods: {
  goToHomePage() {
    // 使用 uni.reLaunch 跳转到首页
    uni.reLaunch({
      url: '/pages/index/index' // 确保这里的路径与 pages.json 中的配置一致
    });
  }
}

然而,uni.reLaunch 会关闭所有非 tabBar 页面,这可能导致用户体验上的问题。如果你只是想确保回到首页而不增加首页节点,可以考虑以下策略:

  1. 检查当前页面路径:在跳转之前,检查当前页面是否已经是首页。如果是,则不进行跳转。
methods: {
  goToHomePage() {
    const currentPagePath = getCurrentPages()[getCurrentPages().length - 1].route;
    if (currentPagePath !== 'index') { // 假设首页的页面路径为 'index'
      uni.reLaunch({
        url: '/pages/index/index'
      });
    }
  }
}
  1. 使用全局状态管理:通过全局状态管理(如 Vuex)来记录是否已经跳转到首页,避免重复跳转。

  2. 利用页面生命周期:在首页的 onShowonLoad 生命周期中,根据需要重置页面状态或数据,而不是依赖于重复跳转。

通过上述方法,你可以有效地控制页面跳转,避免首页节点不断增加的问题。在实际开发中,建议根据具体需求选择合适的策略。

回到顶部