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