2

RelayJSで接続を「並べ替える」最良の方法は何ですか?

私のユーザー インターフェースでは、ユーザーが 2 つのアイテムを「交換」できるようにしていますが、その周りに突然変異を作成するのは少し注意が必要です。

私が今行っているのは単純な方法です。つまりFIELDS_CHANGE、ノード自体を変更するために使用しています。

それは機能しますが、問題は楽観的な更新を書くことができないことです。IDのリストをgraphqlサーバーに渡すことはできますが、実際のデータが必要なため、楽観的更新では機能しません。

したがって、「接続」インターフェースをモックアウトする必要があると思いますが、残念ながら、それでも機能しません。並べ替えたノードを getOptimisticResponse に「コピー」しましたが、無視されているようです。データは実際のサーバー応答と一致します。(ID は簡略化)

オリジナル:

{
  item: {
    edges: {
      {cursor: 1, node: {id:2}}
      {cursor: 2, node: {id:1}}
    }
  }
}

(何もしません): 楽観的な応答:

{
  item: {
    edges: {
      node: {id:1}
      node: {id:2}
    }
  }
}

サーバーの応答:

{
  item: {
    edges: {
      {cursor: 1, node: {id:1}}
      {cursor: 2, node: {id:2}}
    }
  }
}

何を与える?それは同等です(カーソルを除く)。カーソルを追加しても、まだ機能しません。

私は何を間違っていますか?また、ID を接続にモックする簡単な方法はありますか?

また、余談ですが、このデータを断片的に取得する方法はありますか? 現在、2 つのアイテムを並べ替えると、ミューテーション構成のためにリスト全体が再要求されます。で「スワップをシミュレート」できると思いますがRANGE_ADD、もっと簡単な方法はありますか?RANGE_DELETE

4

1 に答える 1