メインコンテンツにスキップ

条件付きフェッチ

概要

クエリフックは、コンポーネントがマウントされるとすぐにデータのフェッチを自動的に開始します。ただし、特定の条件が真になるまでデータのフェッチを遅延させたい場合があります。RTK Queryは、その動作を有効にするために条件付きフェッチをサポートしています。

クエリの自動実行を防ぎたい場合は、フックで`skip`パラメータを使用できます。

スキップの例
const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {
const { data, error, status } = useGetPokemonByNameQuery(name, {
skip,
});

return (
<div>
{name} - {status}
</div>
);
};

`skip`がtrue(または`skipToken`が`arg`として渡された)の場合

  • クエリにキャッシュされたデータがある場合
    • キャッシュされたデータは、初期ロードでは**使用されません**。また、`skip`条件が削除されるまで、同一のクエリからの更新は無視されます。
    • クエリは`uninitialized`のステータスになります。
    • 初期ロード後に`skip: false`が設定されると、キャッシュされた結果が使用されます。
  • クエリにキャッシュされたデータがない場合
    • クエリは`uninitialized`のステータスになります。
    • 開発ツールで表示しても、クエリは状態に存在しません。
    • クエリはマウント時に自動的にフェッチされません。
    • 実行される同じクエリを持つ追加のコンポーネントが追加されても、クエリは自動的に実行されません。
ヒント

TypeScriptユーザーは、エンドポイントの型を正確に維持しながらクエリの `skip` オプションの代わりに `skipToken` を使用してクエリの実行をスキップすることをお勧めします。

条件付きフェッチの例