條件式擷取
概觀
查詢 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
選項的替代方案,以略過執行查詢,同時仍保持端點的類型準確性。