uni-app 自定义导航栏后退执行navigateBack会进去已销毁的也会A=>B=>C C返回B B偶现又回到C

uni-app 自定义导航栏后退执行navigateBack会进去已销毁的也会A=>B=>C C返回B B偶现又回到C

3 回复

hx升级到最新的alpha版本,试试还有没有这个问题

更多关于uni-app 自定义导航栏后退执行navigateBack会进去已销毁的也会A=>B=>C C返回B B偶现又回到C的实战教程也可以访问 https://www.itying.com/category-93-b0.html


hx4.8.3版本,也有此问题,来回跳转

这是一个典型的页面栈管理问题,通常出现在自定义导航栏后退逻辑处理不当的情况下。

问题原因:

  1. 自定义导航栏中的后退按钮未正确绑定官方API(uni.navigateBack
  2. 在B页面中可能存在重复的页面跳转逻辑
  3. 页面生命周期管理混乱,导致页面栈出现异常

解决方案:

1. 规范后退按钮绑定

// 在B页面的自定义导航栏后退按钮中
goBack() {
    uni.navigateBack({
        delta: 1
    });
}

2. 检查页面跳转逻辑

  • 确保B页面没有重复触发跳转到C页面的代码
  • 检查onShowonLoad等生命周期中是否有意外的页面跳转

3. 使用页面栈调试

// 在B页面中添加调试代码
onShow() {
    const pages = getCurrentPages();
    console.log('当前页面栈:', pages.map(page => page.route));
}

4. 避免快速重复点击 在后退按钮上添加防抖处理:

let isNavigating = false;
goBack() {
    if (isNavigating) return;
    isNavigating = true;
    uni.navigateBack({
        delta: 1,
        complete: () => {
            setTimeout(() => {
                isNavigating = false;
            }, 500);
        }
    });
}
回到顶部