提问人:nick 提问时间:11/18/2023 更新时间:11/18/2023 访问量:25
React 查询在特定场合禁用加载?
React query disable loading in certain ocasion?
问:
我有一个这样的查询:
const query = useMyCustomQuery({ ...someParams });
这在组件挂载时调用。
然后,在组件的返回中,我执行如下操作:
{ query.isFetching && <LoadingOverlay /> }
在其上显示加载组件。
现在我需要添加一个 每 30 秒重新取一次。
问题是加载将在重新获取时显示,我需要不要发生这种情况,因为我希望用户即使在重新获取时也能够看到项目列表。refetchInterval
我知道我可以将 to 更改为仅在第一次加载时显示它,但我还有其他用户触发的操作可以进行重新取取,我希望这些操作仍然具有加载指示器。isFetching
isLoading
有什么方法可以区分两者吗?
答:
0赞
Aryan kholqi
11/18/2023
#1
useQuery() 有一个名为 keepPreviousData 的选项。此选项的作用是,如果您有来自服务器的数据,它将显示它们,直到您从服务器获取最新数据。对 https://tanstack.com/query/v4/docs/react/reference/useQuery 的引用
例如:
useQuery({
queryKey: ["test"],
queryFn: your_fetch_request,
keepPreviousData
});
0赞
adsy
11/18/2023
#2
您可以更改为 but 此外,在要强制加载屏幕的用户操作上,您可以调用以将其设置回其初始状态,然后在事件处理程序中后跟 -- 。小心,因为是异步的。isLoading
queryClient.resetQueries({ queryKey })
refetch
resetQueries
我相信这也会迫使回归。isLoading
通过这样做,您基本上是在删除之前获取的状态,但是由于您显示的是加载覆盖层,因此听起来您希望避免在强制刷新时显示任何过时的内容,因此这可能没问题。
评论