Usage > Conditional Fetching: skipping fetching if needed">Usage > Conditional Fetching: skipping fetching if needed">
跳至主要内容

条件获取

概述

查询钩子在组件挂载后立即开始获取数据。但是,在某些情况下,您可能希望延迟获取数据,直到某些条件变为真。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选项的替代方案,以跳过运行查询,同时仍然保持端点的类型准确。

条件获取示例