0

Relay のファット クエリの概念を理解するのにまだ苦労しています。特に、どのデータを再フェッチするかを決定する交差ロジックの部分についてです。

これまで、UserTypeルート クエリ ( という名前)viewerを使用して単純な階層データ構造を構築してきました。この各プロジェクトには、任意にネストされたサブプロジェクト階層をモデル化する別のフィールド (タイプも) があります。projectsProjectConnectionTypeprojectsProjectConnectionType

また、2 つの高次の React コンポーネントがProjectListあり、条件付きでフラグメントを展開することによって (リスト アイテム コンポーネント内でProjectListItemRelay 変数を使用することによって)、この構造をレンダリングします。expanded

これまでのところ、これはうまく機能しており、非常に満足しています。トリッキーな部分は、AddProject突然変異です。名前とparentProjectId入力として (ルート プロジェクトの場合は null の可能性があります) を受け取り、サーバー側の適切な場所に新しいノードを作成するミューテーションを作成しました。その後、新しいもの (後でprojectEdges使用して追加されます) とorを返す必要があるため、そこでも更新できます。RANGE_ADDparentProjectviewersubprojectCount

ビューア (一意のグローバル ルート クエリ ポイント) の場合、すべて正常に動作します。Relayは交差点を正しく計算し、サーバーから新しいデータを要求します。しかし、サブプロジェクトを追加しようとすると、(ミューテーション ID 以外に) 出力フィールドのない完全に空の応答が返されます。私の推測では、Relay はparentProjectフィールドを適切にマッピングする方法を知らないために交差点を間違えているようです。私はすでにそのための構成を追加しようとしましたが、ファットFIELDS_CHANGEクエリparentProject: node(id: "$parentProjectId")内でクエリを実行しようとしました(どちらも機能していませんでした)。

私は何が欠けていますか?ドキュメントを数回読んだことがありますが、まだミューテーションの概念を理解しておらず、すでにかなりばかげていると感じています。

4

0 に答える 0