Skip to content

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<Tnull>`
version`Ref<stringnull>`
lastUpdatedAt`Ref<numbernull>`
isLoadingRef<boolean>是否加载中
error`Ref<stringnull>`
hasSettingsRef<boolean>是否已存在设置
refresh(force?)() => Promise<boolean>手动刷新,force 跳过版本对比
clear()() => void清空设置并停止定时

工作原理

  1. 启动:先从存储读入缓存,再判断是否自动获取(autoFetchOnMount)。
  2. 去重:并发 refresh() 仅发一次请求(共享同一 Promise)。
  3. 版本:后端返回相同 version 时跳过写入,仅更新 lastUpdatedAt
  4. 定时:refreshIntervalMs 启用周期刷新;登出时清空数据并取消定时。
  5. 手动:可随时调用 refresh(true) 强制拉取覆盖缓存。