武汉今鱼乐娱网络
武汉今鱼乐娱网络
  • 发布:2024-08-19 17:41
  • 更新:2024-08-19 17:52
  • 阅读:166

【报Bug】uni.removeTabBarBadge 在非tabbar界面调用时报错:removeTabBarBadge:fail not TabBar page

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 1.0

HBuilderX类型: 正式

HBuilderX版本号: 4.23

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: iphone12

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

我用hello-uniapp示例,在第一个tabbar加入了如下代码:

onLoad() {  
            uni.setTabBarBadge({  
                index: 0,  
                text: "1",  
                fail(e) {  
                    uni.showToast({  
                        title: e.errMsg || e.message,  
                        icon: "none"  
                    })  
                }  
            })  
        },  
        onHide() {  
            setTimeout(() => {  
                uni.removeTabBarBadge({  
                    index: 0,  
                    fail(e) {  
                        console.log("e: ", e);  
                        uni.showToast({  
                            title: e.errMsg || e.message,  
                            icon: "none"  
                        })  
                    }  
                })  
            }, 300)  
        },

这个问题很容易复现,望解决一下。

预期结果:

能正常清除tabbar的badge

实际结果:

不能清除

bug描述:

uni.removeTabBarBadge 在非tabbar界面调用时报错:removeTabBarBadge:fail not TabBar page

2024-08-19 17:41 负责人:无 分享
已邀请:
武汉今鱼乐娱网络

武汉今鱼乐娱网络 (作者) - 武汉软件开发公司,可实地考察

我这个示例只是模拟在非tabbar调用的场景,实际上肯定不是在onHide里面执行。而是在某个非tabbar页面调用的。这样写只是为了demo方便复现。setTimeout延迟后,页面相当于已经切换结束了。

  • DCloud_UNI_yuhe

    你好,非tabbar页面是不能调用tabbar的API的

    2024-08-19 17:54

  • 武汉今鱼乐娱网络 (作者)

    回复 DCloud_UNI_yuhe: 那有没有统一的钩子函数能监听tabbar界面onShow,onHide这种页面生命周期?我不希望我在tabbar那个界面onShow里去执行设置tabbar相关api,这样很不灵活。实际场景就是有一个im会话列表是tabbar页,在点某个会话详情后,我要更新tabbar badge的值。但是不能用全局js调用。如果后期业务有调整,tabbar界面换掉了这个im会话页,那我又得把这里的代码放到新tabbar那个页面里才能生效。

    2024-08-19 18:00

  • DCloud_UNI_yuhe

    回复 武汉今鱼乐娱网络: 你好,暂时还没有相关的钩子,建议你尝试使用自定义tabbar实现

    2024-08-20 14:48

要回复问题请先登录注册