/** * Mock 数据持久化层 * * 所有 mock 数据通过 localStorage 持久化,刷新页面不丢失。 * key 统一以 'mock:' 前缀命名,方便批量清理。 */ const MOCK_PREFIX = 'mock:' /** * 从 localStorage 加载 mock 状态,不存在则用 seedFn 初始化 */ export function loadMockState(key: string, seedFn: () => any): any { const fullKey = MOCK_PREFIX + key const raw = localStorage.getItem(fullKey) if (raw) { try { return JSON.parse(raw) } catch { // 损坏的数据,用种子重建 localStorage.removeItem(fullKey) } } const seed = JSON.parse(JSON.stringify(seedFn())) localStorage.setItem(fullKey, JSON.stringify(seed)) return seed } /** * 保存 mock 状态到 localStorage */ export function saveMockState(key: string, data: any): void { localStorage.setItem(MOCK_PREFIX + key, JSON.stringify(data)) } /** * 删除指定模块的 mock 数据(下次 loadMockState 将用种子重建) */ export function resetMockState(key: string): void { localStorage.removeItem(MOCK_PREFIX + key) } /** * 清除所有 mock 数据(包括业务数据和平台缓存) */ export function resetAllMockData(): void { const keys: string[] = [] for (let i = 0; i < localStorage.length; i++) { const k = localStorage.key(i) if (k && k.startsWith(MOCK_PREFIX)) { keys.push(k) } } keys.forEach((k) => localStorage.removeItem(k)) }