useGlobalSettingsManager
基于 token 的全局设置管理:启动获取、定时刷新、手动刷新;去重与版本对比;登出同步清空。
函数签名
typescript
interface FetchSettingsResult<T> { data: T; version?: string }
interface UseGlobalSettingsManagerOptions<T> {
fetchSettingsFn: (accessToken: string) => Promise<FetchSettingsResult<T>>
storageKeys?: { data?: string; meta?: string }
autoFetchOnMount?: boolean // default: true
refreshIntervalMs?: number // default: undefined(不自动刷新)
}
function useGlobalSettingsManager<T = Record<string, any>>(
token: { accessToken: Ref<string | null>; isAuthenticated: Ref<boolean> },
options: UseGlobalSettingsManagerOptions<T>,
env: UseGlobalSettingsManagerEnvironment
): UseGlobalSettingsManagerReturn<T>返回值
| 属性名 | 类型 | 说明 |
|---|---|---|
settings | `Ref<T | null>` |
version | `Ref<string | null>` |
lastUpdatedAt | `Ref<number | null>` |
isLoading | Ref<boolean> | 是否加载中 |
error | `Ref<string | null>` |
hasSettings | Ref<boolean> | 是否已存在设置 |
refresh(force?) | () => Promise<boolean> | 手动刷新,force 跳过版本对比 |
clear() | () => void | 清空设置并停止定时 |
工作原理
- 启动:先从存储读入缓存,再判断是否自动获取(
autoFetchOnMount)。 - 去重:并发
refresh()仅发一次请求(共享同一 Promise)。 - 版本:后端返回相同
version时跳过写入,仅更新lastUpdatedAt。 - 定时:
refreshIntervalMs启用周期刷新;登出时清空数据并取消定时。 - 手动:可随时调用
refresh(true)强制拉取覆盖缓存。