用途:为 TanStack Query 的 mutation 设计自动失效(invalidation)策略,避免每次 mutation 后手动逐个失效查询,也避免无差别地失效整个应用缓存。
主要能力:
- 全局失效策略。通过 MutationCache 的 onSuccess 回调统一处理所有 mutation 的失效逻辑,示例中在回调内调用 queryClient.invalidateQueries({ queryKey: mutation.options.mutationKey }),使带 mutationKey: ['issues'] 的 mutation 只失效匹配的 issue 查询。
- 显式失效标签。借助 meta 与 matchQuery,在 predicate 中判断 mutation.meta?.invalidates 是否匹配某个 queryKey,从而按标签精确失效目标查询。
- 局部与全局的取舍。一次性行为用局部 mutation 回调;需要全应用一致策略时用 MutationCache 回调。
必要用法与注意点:
- 全局策略必须有作用域,优先使用 mutationKey 或 meta 标签,不要直接 invalidateQueries() 失效全部。
- 若 pending UI 依赖重新拉取,onSuccess 需返回 invalidateQueries 返回的 Promise,使 mutation 保持 pending 直到失效重取完成。
- 对不应被重新拉取的静态数据,使用 staleTime: 'static' 而非 Infinity,以免被宽泛的手动失效波及。
适用场景:React 等框架下使用 TanStack Query 管理服务端状态、mutation 后需要同步刷新相关查询列表或详情的项目。
限制:资料仅给出上述模式与错误示例,未提供安装命令、版本要求、完整 API 说明或性能数据,这些内容暂未提供。