3***@qq.com
3***@qq.com
  • 发布:2022-06-22 11:20
  • 更新:2024-04-03 15:19
  • 阅读:1412

【报Bug】uni.addInterceptor拦截切换tabbar异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10企业版

HBuilderX类型: 正式

HBuilderX版本号: 3.4.15

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 华为p30

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.addInterceptor('switchTab', {  
                // tabbar页面跳转前进行拦截  
                invoke(e) {  
                    return false  
                },  
                success(e) {  
                    // console.log(e)  
                }  
            })

操作步骤:

uni.addInterceptor('switchTab', {  
                // tabbar页面跳转前进行拦截  
                invoke(e) {  
                    return false  
                },  
                success(e) {  
                    // console.log(e)  
                }  
            })

预期结果:

tabbar底部的选中应该也要拦截住

实际结果:

tabbar底部的选中应该也要拦截住

bug描述:

在首页的onshow中使用下面代码,tabbar有两个:首页和个人 ,然后在首页做拦截。
结果:当我点击个人页的时候,页面没有切换到个人页,拦截是非常的成功。但是下面tabbar选中的状态却选中的是个人页
按理来说,选中的状态不是应该也拦截了吗,既然拦截了,那么选中的是首页而非个人页

2022-06-22 11:20 负责人:无 分享
已邀请:
c***@163.com

c***@163.com

朋友,这个问题你解决没,我也遇到这个问题。。

  • 3***@qq.com (作者)

    没有解决,这是api层面的,解决不了,除非不用

    2022-12-17 11:32

8***@qq.com

8***@qq.com

我也遇到这个问题了,我解决的思路: 现在没有api更改原生tabbar的选中状态, 使用uni.reLaunch重定向到系统首页

  • 3***@qq.com (作者)

    使用这个api目前来看,是肯定解决不了问题的,,,只有用别的方式来处理

    2022-12-17 11:33

大良造

大良造 - 大良造

到现在还是没有解决,页面拦截了,选中态没有拦截,诶

hhyang

hhyang - 如有问题,请添加QQ1606726660 备注付费咨询

1***@qq.com

1***@qq.com

解决了,使用我这个方法可以兼容:

    uni.addInterceptor('navigateBack', {  
      invoke: (e) => {  
        // 1 获取页面栈  
        const pages = getCurrentPages()  
        const len = pages?.length  
        // 2 判断长度  
        if (len !== 2) return true  
        // 3 判断最后一个页面是否为引导页  
        if (pages[1].$page.fullPath != "/pages/opening-prompt/opening-prompt") return true  
        // 4 兼容跳转至上个 tab 页面,APP端需要兼容 tabbar 的活跃图标异常  
        const routeName = getRoute(pages[0].$page.fullPath)  
        // 5 判断是否为 tabbar 页面  
        if (!$Router.tabBars.includes(routeName)) return true  
        // 6 跳转回原 tab 页  
        $Router.to(routeName)  
        return true  
      }  
    })

判断进入的引导页,在拿到上一次跳转的路由,再通过判断路由是否是 tab 页面路由,使用 switchTab 去执行一次跳转,就可以将图标切换正常了

2***@qq.com

2***@qq.com

解决没

要回复问题请先登录注册