跳到主要内容

 

条件获取

概述

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

条件获取示例