React Query:获取查询状态



React Query有一个名为useIsFetching的有用钩子(请参阅文档(,它允许检查给定查询当前是否正在获取数据,如下所示:

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

我想做一些非常类似的事情:我想知道给定端点的数据是否已经被提取(isFetched(

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

有什么想法可以实现吗?

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

如果数据还不存在,它将被提取。如果你不想这样,可以考虑queryClient.getQueryState(['my-query-name'])。但是,这将不会创建订阅,因此如果查询状态发生更改,组件将不会重新呈现。

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

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

最新更新