Relay のファット クエリの概念を理解するのにまだ苦労しています。特に、どのデータを再フェッチするかを決定する交差ロジックの部分についてです。
これまで、UserType
ルート クエリ ( という名前)viewer
を使用して単純な階層データ構造を構築してきました。この各プロジェクトには、任意にネストされたサブプロジェクト階層をモデル化する別のフィールド (タイプも) があります。projects
ProjectConnectionType
projects
ProjectConnectionType
また、2 つの高次の React コンポーネントがProjectList
あり、条件付きでフラグメントを展開することによって (リスト アイテム コンポーネント内でProjectListItem
Relay 変数を使用することによって)、この構造をレンダリングします。expanded
これまでのところ、これはうまく機能しており、非常に満足しています。トリッキーな部分は、AddProject
突然変異です。名前とparentProjectId
入力として (ルート プロジェクトの場合は null の可能性があります) を受け取り、サーバー側の適切な場所に新しいノードを作成するミューテーションを作成しました。その後、新しいもの (後でprojectEdges
使用して追加されます) とorを返す必要があるため、そこでも更新できます。RANGE_ADD
parentProject
viewer
subprojectCount
ビューア (一意のグローバル ルート クエリ ポイント) の場合、すべて正常に動作します。Relayは交差点を正しく計算し、サーバーから新しいデータを要求します。しかし、サブプロジェクトを追加しようとすると、(ミューテーション ID 以外に) 出力フィールドのない完全に空の応答が返されます。私の推測では、Relay はparentProject
フィールドを適切にマッピングする方法を知らないために交差点を間違えているようです。私はすでにそのための構成を追加しようとしましたが、ファットFIELDS_CHANGE
クエリparentProject: node(id: "$parentProjectId")
内でクエリを実行しようとしました(どちらも機能していませんでした)。
私は何が欠けていますか?ドキュメントを数回読んだことがありますが、まだミューテーションの概念を理解しておらず、すでにかなりばかげていると感じています。