useGlobalSettingsManager
登录用户维度的全局设置:启动拉取、周期刷新、版本去重与登出清理。
前置依赖
| 参数名 | 类型 | 说明 |
|---|---|---|
token.accessToken / isAuthenticated | Ref | 须已登录才拉取 |
env.vue | Vue 运行时 | ref / computed / watchEffect / 生命周期 |
env.host | 定时器 + now | 周期刷新 |
env.storage | useStorage | 持久化 data + meta |
函数签名
typescript
function useGlobalSettingsManager<T>(
token: TokenReadonly,
options: UseGlobalSettingsManagerOptions<T>,
env: UseGlobalSettingsManagerEnvironment,
): UseGlobalSettingsManagerReturn<T>
interface UseGlobalSettingsManagerOptions<T> {
fetchSettingsFn: (accessToken: string) => Promise<FetchSettingsResult<T>>
storageKeys?: { data?: string; meta?: string }
autoFetchOnMount?: boolean
refreshIntervalMs?: number
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
fetchSettingsFn | function | 是 | 基于 accessToken 拉设置,可返回 version |
autoFetchOnMount | boolean | 否 | 默认 true |
refreshIntervalMs | number | 否 | 周期刷新间隔,不传则不轮询 |
返回值
| 字段 | 说明 |
|---|---|
settings | 设置数据 Ref<T | null> |
version / lastUpdatedAt | 版本与更新时间 |
refresh(force?) | 手动刷新;version 相同时可跳过写入 |
clear | 清空并 remove storage |
工作原理
- 挂载水合 storage;已登录且
autoFetchOnMount则refresh。 refresh合并 in-flight Promise,避免并发重复请求。- 响应
version与本地相同时不写 storage(减少无效更新)。 watchEffect监听 token:登出clear;登录可重新拉取。- 可选
refreshIntervalMs定时refresh。
异常
请求失败写入 error,refresh 返回 false。