uni-app 小程序安卓手机首次进入,uni.reLaunch和uni.switch连续使用后,再uni.navigateTo跳转,子页面无法返回

uni-app 小程序安卓手机首次进入,uni.reLaunch和uni.switch连续使用后,再uni.navigateTo跳转,子页面无法返回

4 回复

小程序无法登录,请给一个可以复现的demo,因为这个场景是比较复杂的,无法判定是哪个地方出了问题,你可以自己复现个demo,看是否有此问题,如果有,请把demo发出来,如果没有那就自行查看其他原因

更多关于uni-app 小程序安卓手机首次进入,uni.reLaunch和uni.switch连续使用后,再uni.navigateTo跳转,子页面无法返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html


安卓手机搜索田小二 小程序,首页新闻资讯点击进去,也可复现返回不了的, 记住是安卓手机第一次进入

这个不需要登录

在 uni-app 小程序开发中,安卓手机首次进入时连续使用 uni.reLaunchuni.switchTab 后再调用 uni.navigateTo 导致子页面无法返回,这通常是由于页面栈管理异常引起的。

问题分析:

  1. uni.reLaunch 会关闭所有页面并打开新页面,清空页面栈。
  2. uni.switchTab 切换到 tabBar 页面时会关闭其他非 tabBar 页面。
  3. 连续使用这两个 API 可能导致页面栈状态异常,后续 uni.navigateTo 生成的页面可能无法正确入栈。

解决方案:

  1. 检查页面栈状态:在 uni.navigateTo 前使用 getCurrentPages() 查看当前页面栈情况,确认是否正常。
  2. 避免连续跳转:在 uni.reLaunchuni.switchTab 后,建议用 setTimeout 延迟后续跳转,确保页面栈稳定。
  3. 使用条件判断:根据业务逻辑,在特定场景下避免连续跳转,或改用 uni.redirectTo 替代 uni.navigateTo
  4. 更新 uni-app 版本:确保使用最新版本,此类问题可能在后续版本中修复。

示例代码调整:

// 原逻辑可能存在问题
uni.reLaunch({ url: '/pages/index/index' });
uni.switchTab({ url: '/pages/tab/tab' });
uni.navigateTo({ url: '/pages/detail/detail' });

// 调整为
uni.reLaunch({ 
  url: '/pages/index/index',
  success: () => {
    setTimeout(() => {
      uni.switchTab({ 
        url: '/pages/tab/tab',
        success: () => {
          setTimeout(() => {
            uni.navigateTo({ url: '/pages/detail/detail' });
          }, 100);
        }
      });
    }, 100);
  }
});
回到顶部