在react-query中使用React state作为查询键时,即使cacheTime仍然会获取数据,原因是什么?
const [value, setValue] = useState(3336);
const { isLoading: postLoading, data: postData, refetch } = useQuery(
["post", "post", { value }],
() => getPost(value + ""),
{
refetchOnWindowFocus: false,
refetchOnMount: false,
retry: 0,
}
);
值:3336 -〉4444 -〉3336
我有一个关于value: 3336
的缓存。也cacheTime仍然存在,但它正在重新获取数据...
什么是理性?
const { id } = useParams();
const { isLoading: postLoading, data: postData } = useQuery(
["post", "post", { id }],
() => getPost(id + ""),
{
refetchOnWindowFocus: false, // 포커스 toggle 시 refetch
refetchOnMount: false, // 컴포넌트 리랜더링시 refetch
retry: 0,
}
);
它工作得很好。我搞不懂....
1条答案
按热度按时间ecfsfe2w1#
当QueryKey改变时,react查询将观察到一个新的缓存条目,该条目最初可能是空的。因此,它必须为该键获取数据。这是预期的,也是一件好事。
如果你想避免加载状态,并保持屏幕上的数据来自旧键,你可以将
keepPreviousData: true
传递给你的Query。