tabbar加入uni-app暗黑模式相关的配置多语言切换就不实时更新

tabbar加入uni-app暗黑模式相关的配置多语言切换就不实时更新

开发环境 版本号 项目创建方式
Windows 11 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

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

HBuilderX类型:正式

HBuilderX版本号:4.84

手机系统:iOS

手机系统版本号:iOS 26

手机厂商:苹果

手机机型:iPhone 17

页面类型:vue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

操作步骤:
"tabBar": {  
    "selectedColor": "#AC237C",  
    "backgroundColor": "@tabBarBg",  
    "borderStyle": "@tabBarBorderStyle",  
    "color": "@tabBarTextColor",  
    "fontSize": "12px",  
    "list": [{  
            "pagePath": "pages/index/index",  
            "text": "%tabbar.index%",  
            "iconPath": "@iconPath1",  
            "selectedIconPath": "/static/img/tabbar/system-index-selected.png"  
        },  
        {  
            "pagePath": "pages/card/cardHome/index",  
            "text": "%tabbar.card%",  
            "iconPath": "@iconPath2",  
            "selectedIconPath": "/static/img/tabbar/system-card-selected.png"  
        },  
        {  
            "pagePath": "pages/wallet/wallet",  
            "text": "%tabbar.wallet%",  
            "iconPath": "@iconPath3",  
            "selectedIconPath": "/static/img/tabbar/system-wallet-selected.png"  
        },  
        {  
            "pagePath": "pages/member/member",  
            "text": "%tabbar.member%",  
            "iconPath": "@iconPath4",  
            "selectedIconPath": "/static/img/tabbar/system-member-selected.png"  
        }  
    ]  
},
预期结果:
切换语言时tabbar文字实时更新

实际结果:
不会实时更新

bug描述:
原生的tabBar在page.json里加入暗黑模式相关的配置,多语言切换时就不会实时更新了

更多关于tabbar加入uni-app暗黑模式相关的配置多语言切换就不实时更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这个只能用api设置吧

更多关于tabbar加入uni-app暗黑模式相关的配置多语言切换就不实时更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html


用uni.setTabBarItem设置一点不起作用,就很离谱

这是一个已知的uni-app原生tabBar在多语言切换时的限制问题。当tabBar配置中使用了暗黑模式相关的动态主题变量(如@tabBarBg@tabBarBorderStyle等)时,会导致tabBar的初始化机制发生变化,使得多语言切换时无法实时更新文字内容。

问题原因:

  1. 原生tabBar在应用启动时就已经初始化完成
  2. 暗黑模式变量的引入让tabBar更早被实例化
  3. 多语言切换时,tabBar不会重新渲染文字内容

解决方案:

  1. 使用自定义tabBar组件 - 这是官方推荐的解决方案,通过vue组件实现tabBar,可以完全控制其渲染逻辑,支持实时语言切换
  2. 手动触发更新 - 在语言切换后调用uni.setTabBarItem方法逐个更新tabBar项的文字:
// 语言切换后执行
uni.setTabBarItem({
  index: 0,
  text: this.$t('tabbar.index')
})
// 重复为每个tabBar项设置
回到顶部