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

React Query v4中能否用包含性查询键调用setQueriesData?

React Query v4 实现查询键包含性匹配更新数据

React Query 默认的查询键匹配逻辑是前缀匹配,而非包含性匹配。这就是为什么你用 ['key2'] 无法匹配到查询键为 ['key1', 'key2', 'key3'] 的查询——因为 ['key2'] 不是目标查询键的前缀。

要实现类似 invalidateQueries 的包含性匹配(只要查询键中存在目标值就匹配),你需要使用**过滤器函数(predicate)**替代数组形式的查询键参数:

queryClient.setQueriesData<InfiniteData<Data>>(
  { 
    predicate: (query) => query.queryKey.includes('key2') 
  },
  (prev) => {
    if (!prev) return undefined;
    return {
      ...prev,
      pages: prev?.pages?.map((page) => updater(page)),
    };
  },
);

关键说明:

  • predicate 函数会遍历所有缓存中的查询,返回 true 的查询会被选中进行数据更新。
  • 你可以在函数中自定义匹配逻辑,比如检查查询键是否包含某个特定元素、是否符合某种模式等,完全满足包含性匹配的需求。
  • 数组形式的查询键仅支持前缀匹配:只有当传入的数组是目标查询键的起始前缀时才会匹配(比如 ['key1'] 匹配 ['key1', 'key2', 'key3'],['key1', 'key2'] 也匹配,但 ['key2'] 不匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:25:07