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

TanStack React Query v5:如何重新获取/失效非活跃查询?

解决TanStack React Query v5中重置/重新获取Disabled查询的问题

在React Query v5中,enabled: false的查询不再被归类为inactive状态,而是单独划分成了disabled状态。这就是你设置type: "inactive"或"all"都无法匹配到目标查询的核心原因——v4中enabled: false属于inactive范畴,但v5拆分了这两类状态的划分逻辑。

具体解决方案

1. 重置Disabled查询(resetQueries)

使用predicate函数精准匹配disabled状态的查询:

<button
  type="button"
  onClick={() =>
    qc.resetQueries({
      queryKey: ['repoData'],
      // 匹配状态为disabled的目标查询
      predicate: (query) => query.state.status === 'disabled'
    })
  }
>
  Click to refetch all queries
</button>

如果需要同时覆盖inactive和disabled状态的查询,调整predicate逻辑即可:

predicate: (query) => 
  query.state.status === 'disabled' || query.state.status === 'inactive'

2. 重新获取Disabled查询(refetchQueries)

如果你的目标是直接触发查询执行而非重置,可以使用refetchQueries并开启includeDisabled选项:

<button
  type="button"
  onClick={() =>
    qc.refetchQueries({
      queryKey: ['repoData'],
      includeDisabled: true
    })
  }
>
  Click to refetch all queries
</button>

修改后的完整Example.tsx示例

import { useQuery, useQueryClient } from '@tanstack/react-query';
export function Example() {
  const qc = useQueryClient();
  const { isLoading, error, data } = useQuery({
    queryKey: ['repoData'], // v5推荐使用数组形式的queryKey,更符合规范
    queryFn: () => {
      return fetch(
        'https://api.github.com/repos/tannerlinsley/react-query'
      ).then((res) => res.json());
    },
    enabled: false,
  });

  if (!data) {
    return (
      <button
        type="button"
        onClick={() =>
          qc.resetQueries({
            queryKey: ['repoData'],
            predicate: (query) => query.state.status === 'disabled'
          })
        }
      >
        Click to refetch all queries
      </button>
    );
  }

  if (isLoading) return 'Loading...';

  if (error) return 'An error has occurred: ' + error.message;

  return (
    <div>
      <h1>{data.name}</h1>
      <p>{data.description}</p>
      <strong>👀 {data.subscribers_count}</strong> {' '}
      <strong>✨ {data.stargazers_count}</strong> {' '}
      <strong>🍴 {data.forks_count}</strong>
    </div>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:29