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

條件式擷取

概觀

查詢 Hook 會在元件掛載時自動開始擷取資料。但是,在某些情況下,您可能希望延後擷取資料,直到某個條件為真。RTK Query 支援條件式擷取,以啟用此行為。

如果您要防止查詢自動執行,可以在 Hook 中使用 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 使用者可能希望使用 skipToken 作為 skip 選項的替代方案,以略過執行查詢,同時仍保持端點的類型準確性。

條件式擷取範例