feat: tabbar - 补全 tabbarList ts 类型

This commit is contained in:
Utopia
2025-08-19 17:07:49 +08:00
parent d349281da5
commit f72d8e9a04
3 changed files with 9 additions and 7 deletions

View File

@@ -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张图

View File

@@ -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 })

View File

@@ -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 }