問題タブ [apollo-cache-inmemory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apollo - Apollo のページネーションとキャッシュとネットワークのフェッチ ポリシー
apollo docsは、ページネーション ロジックを実装するときに、フィールド ポリシーにマージ機能を実装する方法を提案しています。
ただし、クエリに「キャッシュとネットワーク」のフェッチ ポリシーを使用すると、最初にキャッシュからデータが読み込まれ、次にネットワークに出て、既存のリストに受信データが追加されることを意味します。受信データが以前にキャッシュにあったものと同じである場合、項目はキャッシュに 2 回存在します。
これを解決する正しい方法は何ですか?マージ機能で初期ロードと fetchmore リクエストを区別できますか? マージ機能は、キャッシュからロードしたものを上書きする必要がある初期フェッチと、ページネーション フェッチとでは明らかに異なる動作をするはずです。
reactjs - Apollo Graphql relayStylePagination により、変数の変更時にクエリが再フェッチされなくなります
Apollo クライアントのキャッシュ タイプ ポリシーでヘルパー関数を使用すると、クエリに渡される変数を変更しても、関数を手動でrelayStylePagination
呼び出してもクエリが再度呼び出されません。refetch
動作を完全に実行しfetchMore
、新しいデータをマージします。
私のキャッシュフィールドは次のようになります。
graphql - 同じIDに対して異なる値を持つことができるIDプロパティを持つGraphqlタイプ
id プロパティを持つオブジェクト タイプは、同じ id を指定して同じコンテンツを持たなければならないかどうか疑問に思っていました。現時点では、同じ ID に異なるコンテンツを含めることができます。
次のクエリ:
の場合、結果は次のようになりますPriceSelectorInput
。{currency: "USD", country: "US"}
の場合、結果は次のようになりますPriceSelectorInput
。{currency: "EUR", country: "DE"}
私の質問は、タイプ ProductSearchVariant の masterVariant の id はどちらの場合も 1 ですが、scopedPrice の値が異なるということです。これは、このレポで示されているように、apollo キャッシュの defaultDataIdFromObject 関数を壊します。私の質問は; これは apollo のバグですか、それとも ProductSearchVariant の型定義における graphql 標準に違反しているのでしょうか?