西藏巴青项目

tabBar.js 1003B

1234567891011121314151617181920212223242526272829303132333435363738
  1. const TAB_KEYS = ['nav.home', 'nav.ai', 'nav.message', 'nav.mine']
  2. /** 与 pages.json tabBar.list[].pagePath 一致(无开头 /) */
  3. const TAB_PAGE_PATHS = new Set([
  4. 'pages/home/index',
  5. 'pages/ai/index',
  6. 'pages/message/index',
  7. 'pages/mine/index'
  8. ])
  9. /**
  10. * 当前栈顶是否为原生 TabBar 页;分包等页面调用 setTabBar* 会报 not TabBar page。
  11. */
  12. export function isTabBarPage() {
  13. const stack = getCurrentPages()
  14. if (!stack.length) return false
  15. const cur = stack[stack.length - 1]
  16. const route = cur.route || ''
  17. return TAB_PAGE_PATHS.has(route)
  18. }
  19. /**
  20. * 原生 tabBar 的 text 不能写进 pages.json 的 i18n,需在运行时按当前语言更新。
  21. * @param {(key: string) => string} t 如 (k) => this.$t(k)
  22. */
  23. export function syncTabBarText(t) {
  24. if (!isTabBarPage()) return
  25. TAB_KEYS.forEach((key, index) => {
  26. uni.setTabBarItem({
  27. index,
  28. text: t(key),
  29. fail() {
  30. /* 个别端仍可能失败,静默即可 */
  31. }
  32. })
  33. })
  34. }