UNPKG

@pwc-ra/components

Version:

PwC RA shared components library

71 lines (63 loc) 1.98 kB
import { create } from 'zustand'; import { PageHeaderState } from '@pwc-ra/components'; import type { User } from '@pwc-ra/components'; // 租户类型 interface Tenant { id: string; code: string; name: string; } // 全局状态类型 interface GlobalState { // 用户信息 currentUser: User | null; // 当前选择的租户 selectedTenant: Tenant | null; // 加载状态 loading: boolean; // 错误信息 error: string | null; // 设置当前用户 setCurrentUser: (user: User | null) => void; // 设置当前租户 setSelectedTenant: (tenant: Tenant | null) => void; // 设置加载状态 setLoading: (loading: boolean) => void; // 设置错误信息 setError: (error: string | null) => void; // 初始化状态 initialize: () => void; } // 创建全局状态管理器 const useGlobalStore = create<GlobalState>((set) => ({ currentUser: PageHeaderState.getCurrentUser(), selectedTenant: PageHeaderState.getSelectedTenant(), loading: PageHeaderState.isLoading(), error: PageHeaderState.getError(), setCurrentUser: (user) => set({ currentUser: user }), setSelectedTenant: (tenant) => set({ selectedTenant: tenant }), setLoading: (loading) => set({ loading }), setError: (error) => set({ error }), // 初始化状态,从PageHeaderState获取初始值并订阅更新 initialize: () => { // 从PageHeaderState获取初始值 set({ currentUser: PageHeaderState.getCurrentUser(), selectedTenant: PageHeaderState.getSelectedTenant(), loading: PageHeaderState.isLoading(), error: PageHeaderState.getError() }); // 订阅PageHeaderState的更新 PageHeaderState.subscribe((state) => { set({ currentUser: state.currentUser, selectedTenant: state.selectedTenant, loading: state.loading, error: state.error }); }); } })); // 初始化全局状态 useGlobalStore.getState().initialize(); export default useGlobalStore;