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