diff --git a/src/store/index.ts b/src/store/index.ts index 74b1b2f..249f53f 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -15,3 +15,4 @@ export default store // 模块统一导出 export * from './user' +export * from './tabbar' diff --git a/src/store/tabbar.ts b/src/store/tabbar.ts new file mode 100644 index 0000000..4216cc5 --- /dev/null +++ b/src/store/tabbar.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' + +export interface TabbarItem { + name: string + value: number | null + active: boolean +} + +export const useTabbarStore = defineStore('tabbar', { + state: (): { tabbarItems: TabbarItem[] } => ({ + tabbarItems: [ + { name: 'index', value: null, active: true }, + { name: 'about', value: null, active: false }, + ], + }), + getters: { + getTabbarItems: (state) => { + return state.tabbarItems + }, + getActive: (state) => { + const item = state.tabbarItems.find((item) => item.active) + return item || state.tabbarItems[0] + }, + getTabbarItemValue: (state) => { + return (name: string) => { + const item = state.tabbarItems.find((item) => item.name === name) + return item && item.value ? item.value : null + } + }, + }, + actions: { + setTabbarItem(name: string, value: number) { + const tabbarItem = this.tabbarItems.find((item) => item.name === name) + if (tabbarItem) { + tabbarItem.value = value + } + }, + setTabbarItemActive(name: string) { + this.tabbarItems.forEach((item) => { + if (item.name === name) { + item.active = true + } else { + item.active = false + } + }) + }, + }, +})