uni-app app.vue页面调用setTabBarBadge失效
uni-app app.vue页面调用setTabBarBadge失效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:2.7.14
手机系统:Android
手机系统版本号:Android 10
手机厂商:OPPO
手机机型:findx
页面类型:vue
打包方式:云端
操作步骤:
onLaunch: function() { uni.setTabBarBadge({ index:0, text:‘15’ }) }
预期结果:
第一个tab角标显示15
实际结果:
自定义基座中第一个tab显示15。正式发布包中第一个tab未显示15
bug描述:
①在自定义基座中,app.vue页面onlunch向tab设置角标,调用uni.setTabBarBadge 角标可以正常显示(在非tab页与tab目标页都可以)。
②发布正式包后,app.vue调用uni.setTabBarBadge设置角标不显示。在tab目标页面调用uni.setTabBarBadge可以设置角标.
角标数字,都有一个网络的请求过程,数据都是获取成功。
底部有5个tab。目的是向第一个tab添加角标
更多关于uni-app app.vue页面调用setTabBarBadge失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
onLaunch 时 tabbar 还未加载,setTabBarBadge 需要在 tabbar 渲染后才能使用,其他操作 tabbar 的 API 亦如是,想一想你怎么往一个不存在的东西加东西呢
更多关于uni-app app.vue页面调用setTabBarBadge失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
正式打包后,打开应用使tab页完全显示,回到手机桌面(未关闭应用)。在打开应用,此时APP.vue的onshow里面,主动设置setTabBarBadge,角标数量也不会发生变化
这是一个关于uni-app中setTabBarBadge在正式包失效的常见问题。根据描述,问题主要出现在正式包中app.vue的onLaunch调用setTabBarBadge失效,而在自定义基座中可以正常工作。
原因分析:
- 正式包运行时,app.vue的onLaunch执行时,tabBar可能还未初始化完成
- 正式包的运行环境与自定义基座存在差异,导致API调用时机不同
解决方案:
- 将setTabBarBadge调用延迟到页面生命周期中,如首页的onLoad或onShow
- 使用setTimeout延迟执行:
onLaunch: function() {
setTimeout(() => {
uni.setTabBarBadge({
index:0,
text:'15'
})
}, 500)
}