diff --git a/src/tabbar/config.ts b/src/tabbar/config.ts index e8bdf0e..91eeac6 100644 --- a/src/tabbar/config.ts +++ b/src/tabbar/config.ts @@ -40,7 +40,7 @@ export const nativeTabbarList: NativeTabBarItem[] = [ }, ] -interface CustomTabBarItem { +export interface CustomTabBarItem { text: string pagePath: string iconType: 'uniUi' | 'uiLib' | 'unocss' | 'iconfont' | 'image' // 不建议用 image 模式,需要配置2张图 diff --git a/src/tabbar/index.vue b/src/tabbar/index.vue index b0ede6f..fd9c6f8 100644 --- a/src/tabbar/index.vue +++ b/src/tabbar/index.vue @@ -29,7 +29,7 @@ function handleClick(index: number) { handleClickBulge() return } - const url = tabbarList[index].path + const url = tabbarList[index].pagePath tabbarStore.setCurIdx(index) if (tabbarCacheEnable) { uni.switchTab({ url }) diff --git a/src/tabbar/store.ts b/src/tabbar/store.ts index 2feeea7..86e0db1 100644 --- a/src/tabbar/store.ts +++ b/src/tabbar/store.ts @@ -1,27 +1,27 @@ +import type { CustomTabBarItem } from './config' import { tabbarList as _tabbarList } from './config' // TODO 1/2: 中间的鼓包tabbarItem的开关 const BULGE_ENABLE = true /** tabbarList 里面的 path 从 pages.config.ts 得到 */ -const tabbarList = _tabbarList.map(item => ({ ...item, path: `/${item.pagePath}` })) +const tabbarList: CustomTabBarItem[] = _tabbarList.map(item => ({ ...item, pagePath: item.pagePath.startsWith('/') ? item.pagePath : `/${item.pagePath}` })) + if (BULGE_ENABLE) { if (tabbarList.length % 2 === 1) { console.error('tabbar 数量必须是偶数,否则样式很奇怪!!') } tabbarList.splice(tabbarList.length / 2, 0, { isBulge: true, - } as any) + } as CustomTabBarItem) } -export { tabbarList } - /** * 自定义 tabbar 的状态管理,原生 tabbar 无需关注本文件 * tabbar 状态,增加 storageSync 保证刷新浏览器时在正确的 tabbar 页面 * 使用reactive简单状态,而不是 pinia 全局状态 */ -export const tabbarStore = reactive({ +const tabbarStore = reactive({ curIdx: uni.getStorageSync('app-tabbar-index') || 0, prevIdx: uni.getStorageSync('app-tabbar-index') || 0, setCurIdx(idx: number) { @@ -46,3 +46,5 @@ export const tabbarStore = reactive({ this.prevIdx = uni.getStorageSync('app-tabbar-index') || 0 }, }) + +export { tabbarList, tabbarStore }