apollo docsは、ページネーション ロジックを実装するときに、フィールド ポリシーにマージ機能を実装する方法を提案しています。
merge(existing = [], incoming) {
return [...existing, ...incoming];
}
ただし、クエリに「キャッシュとネットワーク」のフェッチ ポリシーを使用すると、最初にキャッシュからデータが読み込まれ、次にネットワークに出て、既存のリストに受信データが追加されることを意味します。受信データが以前にキャッシュにあったものと同じである場合、項目はキャッシュに 2 回存在します。
これを解決する正しい方法は何ですか?マージ機能で初期ロードと fetchmore リクエストを区別できますか? マージ機能は、キャッシュからロードしたものを上書きする必要がある初期フェッチと、ページネーション フェッチとでは明らかに異なる動作をするはずです。