- Vite + React 18 + TypeScript - TailwindCSS 暗色主题 - 仪表板、分析、事件浏览页面 - Recharts 图表组件 - Zustand 状态管理 - TanStack Query 数据请求
27 lines
624 B
TypeScript
27 lines
624 B
TypeScript
import { create } from 'zustand';
|
|
|
|
interface AppState {
|
|
lastRefresh: Date | null;
|
|
isLoading: boolean;
|
|
error: string | null;
|
|
refreshData: () => void;
|
|
setLoading: (loading: boolean) => void;
|
|
setError: (error: string | null) => void;
|
|
}
|
|
|
|
export const useAppStore = create<AppState>((set) => ({
|
|
lastRefresh: null,
|
|
isLoading: false,
|
|
error: null,
|
|
|
|
refreshData: () => {
|
|
set({ lastRefresh: new Date() });
|
|
// Trigger refetch via React Query
|
|
window.dispatchEvent(new CustomEvent('app:refresh'));
|
|
},
|
|
|
|
setLoading: (loading) => set({ isLoading: loading }),
|
|
setError: (error) => set({ error }),
|
|
}));
|
|
|