Files
aiot-uniapp/src/tabbar/store.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

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}` }))
if (BULGE_ENABLE) {
if (tabbarList.length % 2 === 1) {
console.error('tabbar 数量必须是偶数,否则样式很奇怪!!')
}
tabbarList.splice(tabbarList.length / 2, 0, {
isBulge: true,
} as any)
}
export { tabbarList }
export function isPageTabbar(path: string) {
return tabbarList.some(item => item.pagePath === path)
}
2024-05-11 11:32:34 +08:00
/**
* tabbar tabbar
2024-05-11 11:32:34 +08:00
* tabbar storageSync tabbar
2024-05-28 11:33:15 +08:00
* 使reactive简单状态 pinia
2024-05-11 11:32:34 +08:00
*/
2024-05-11 09:36:26 +08:00
export const tabbarStore = reactive({
2024-05-11 11:36:44 +08:00
curIdx: uni.getStorageSync('app-tabbar-index') || 0,
prevIdx: uni.getStorageSync('app-tabbar-index') || 0,
2024-05-11 09:36:26 +08:00
setCurIdx(idx: number) {
this.curIdx = idx
2024-05-11 11:36:44 +08:00
uni.setStorageSync('app-tabbar-index', idx)
2024-05-11 09:36:26 +08:00
},
setAutoCurIdx(path: string) {
const index = tabbarList.findIndex(item => item.pagePath === path)
// console.log('index:', index, path)
// console.log('tabbarList:', tabbarList)
if (index === -1) {
this.setCurIdx(0)
}
else {
this.setCurIdx(index)
}
},
restorePrevIdx() {
if (this.prevIdx === this.curIdx)
return
this.setCurIdx(this.prevIdx)
this.prevIdx = uni.getStorageSync('app-tabbar-index') || 0
},
2024-05-11 09:36:26 +08:00
})