React Query:获取查询状态

React Query: get query status

React Query 有一个有用的钩子,叫做 useIsFetching(参见 docs),它允许检查给定的查询当前是否正在获取数据,如下所示:

const queryCount = useIsFetching(['my-query-name'])

我想做一些非常相似的事情:我想知道给定端点是否已经获取数据 (isFetched)。

我知道这是从 useQuery 钩子返回的,但是使用这个钩子会再次调用端点,我想避免重复调用。

有什么实现方法吗?

您可以通过在查询中设置 staleTime 来避免再次调用端点,因为那时数据将仅来自缓存。

如果数据尚不存在,将获取它。如果您不想那样,请考虑 queryClient.getQueryState(['my-query-name'])。但是,这将 不会 创建订阅,因此如果查询状态更改,您的组件将不会 re-render。

通过使用 useQueryenabled 属性 解决,它允许定义是否发出请求。

useQuery(
    ['my-query-name', requestPayload],
    () => callMyEndpoint(requestPayload),
    {
        // ...
        enabled: booleanToIndicateWhetherToEnable,
    }
)