使用默认选项暂停重新获取react-query,而不使用重置

问题描述 投票:0回答:1

使用react-query,如何打开和关闭重新获取间隔,而无需在查询客户端上调用重置?

我有一个查询客户端,其默认选项中包含重新获取间隔:

new QueryClient({
    defaultOptions: {
        queries: {
            refetchInterval: 1000,
        },
    },
})

并像这样构建悬念查询:

const query = useSuspenseQuery({queryKey: ['example'], queryFn: exampleFn});

然后在我的应用程序的其他地方我正在获取查询客户端:

const queryClient = useQueryClient();

并在函数中切换重新获取间隔,如下所示:

const handlePlayback = (play: boolean) => {
    queryClient.setDefaultOptions({
        queries: {
            refetchInterval: play ? 1000 : false,
        }
    })
}

这本身没有任何作用。这是有道理的,因为默认选项已经应用于相关查询。调用 refetch、invalidate 等不会使用新选项更新查询。这个没关系。

我现在打电话

queryClient.resetQueries();

我的问题是,因为我在悬念中使用悬念查询,所以使用查询的组件在每次切换时都会重新挂起。使用延迟状态不起作用,因为查询仍处于挂起状态。 有没有一种方法可以调整重新获取间隔而不需要重置。 谢谢。

reactjs react-query
1个回答
0
投票

最好的方法可能是不使用

setDefaultOptions
来设置选项,而是将一个函数传递到使用相同逻辑的 refetchInterval 中,比如

const query = useSuspenseQuery({
  queryKey: ['example'],
  queryFn: exampleFn,
  refetchInterval: () => play ? 1000 : false
});
© www.soinside.com 2019 - 2024. All rights reserved.