提取策略
重複使用本地快取資料的第一步是將 fetchPolicy
傳遞給 loadQuery
函式,該函式可由 useQueryLoader
提供(請參閱提取查詢章節)
const React = require('React');
const {graphql} = require('react-relay');
function AppTabs() {
const [
queryRef,
loadQuery,
] = useQueryLoader(HomeTabQuery);
const onSelectHomeTab = () => {
loadQuery({id: '4'}, {fetchPolicy: 'store-or-network'});
}
// ...
}
提供的 fetchPolicy
將決定
- 是否應從本地快取滿足查詢,以及
- 是否應發出網路請求以從伺服器提取查詢,這取決於儲存中該查詢的資料可用性。
預設情況下,Relay 會嘗試從本地快取讀取查詢;如果該查詢的任何資料遺失或過時,它將從網路提取整個查詢。此預設的 fetchPolicy
稱為「store-or-network」。
具體來說,fetchPolicy
可以是以下任何選項:**
- 「store-or-network」:(預設)會重複使用本地快取的資料,並且僅當查詢的任何資料遺失或過時時才會發送網路請求。如果查詢已完全快取,則不會發出網路請求。
- 「store-and-network」:會重複使用本地快取的資料,並且總是發送網路請求,無論是否有任何資料在儲存中遺失或過時。
- 「network-only」:不會重複使用本地快取的資料,並且總是發送網路請求來提取查詢,忽略任何可能本地快取的資料以及它是否遺失或過時。
- 「store-only」:僅重複使用本地快取的資料,並且永遠不會發送網路請求來提取查詢。在這種情況下,提取查詢的責任落在呼叫者身上,但此策略也可用於讀取和操作完全本地的資料。
請注意,提取和呈現不同資料章節中討論的 refetch
函式也採用 fetchPolicy
。
此頁面有幫助嗎?
透過 回答幾個快速問題.