条件获取
概述
查询钩子在组件挂载后立即开始获取数据。但是,在某些情况下,您可能希望延迟获取数据,直到某些条件变为真。RTK Query 支持条件获取,以实现此行为。
如果您想阻止查询自动运行,可以在钩子中使用 skip
参数。
跳过示例
const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {
const { data, error, status } = useGetPokemonByNameQuery(name, {
skip,
});
return (
<div>
{name} - {status}
</div>
);
};
当 skip
为真(或 skipToken
作为 arg
传入时)
- 如果查询有缓存数据
- 缓存数据在初始加载时不会被使用,并且会忽略来自任何相同查询的更新,直到
skip
条件被移除 - 查询将处于
uninitialized
状态 - 如果在初始加载后设置了
skip: false
,则将使用缓存的结果
- 缓存数据在初始加载时不会被使用,并且会忽略来自任何相同查询的更新,直到
- 如果查询没有缓存数据
- 查询将处于
uninitialized
状态 - 在使用开发者工具查看时,查询将不存在于状态中
- 查询不会在挂载时自动获取
- 当添加具有相同查询的额外组件时,查询不会自动运行,即使这些组件确实运行
- 查询将处于
提示
Typescript 用户可能希望使用skipToken
作为skip
选项的替代方案,以跳过运行查询,同时仍然保持端点的类型准确。