You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在react-query中获取活跃queryKeys并失效含by_status的查询

解决React Query中批量失效含特定关键词的查询

直接用invalidateQueries的匹配规则(推荐)

不用手动获取所有活跃queryKey,React Query的queryClient.invalidateQueries支持通过predicate函数批量匹配目标查询,这是最简洁高效的方式。

在useMutation的onSuccess回调中这么写:

const queryClient = useQueryClient();

const mutation = useMutation(
  // 你的mutation函数
  (data) => api.updateQuestion(data),
  {
    onSuccess: () => {
      // 失效所有包含"by_status"的查询
      queryClient.invalidateQueries({
        predicate: (query) => query.queryKey.includes("by_status")
      });
    }
  }
);

如果需要更精确的匹配(比如确保根key是"questions"),可以调整predicate:

predicate: (query) => 
  query.queryKey[0] === "questions" && 
  query.queryKey.includes("by_status")

获取当前活跃的queryKey方法

如果你确实需要获取所有活跃状态的queryKey,可以通过查询缓存的getAll方法实现:

const queryClient = useQueryClient();

// 获取所有缓存中的查询
const allQueries = queryClient.getQueryCache().getAll();
// 过滤出活跃状态的并提取queryKey
const activeQueryKeys = allQueries
  .filter(query => query.state.status === "active")
  .map(query => query.queryKey);

不过更推荐用第一种invalidateQueries的方式,避免手动遍历缓存的额外开销。

内容的提问来源于stack exchange,提问作者Woohaik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:05:20