フェッチポリシー
ローカールデータを再利用するための最初のステップとして、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
が使用されます。
このページは役立ちましたか?
このサイトをさらに改善するには、 いくつかの簡単な質問にお答えください.