在RelayJS中重新排序连接的最佳方式是什么?为重新排序的连接创建乐观响应
在我的用户界面中,我允许我的用户“交换”两个项目,但在这个项目周围创建变化有点棘手。
我现在正在做的是天真的方式,即使用FIELDS_CHANGE
来改变我的节点本身。
它的工作原理,但问题是我似乎无法为它写一个乐观的更新。我能够将一个ID列表传递给我的graphql服务器,但这对于乐观更新不起作用,因为它期望实际的数据。
所以我想我必须嘲笑我的'连接'界面,但不幸的是,它仍然无法正常工作。我'复制'我的重新排序节点getOptimisticResponse,但它似乎被忽略。数据与实际的服务器响应相匹配。 (IDS简体)
原:
{
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到连接?
另外,有没有办法让这些数据零碎?现在,重新排序两个项目重新请求整个列表,因为我的突变配置。我想我可以用RANGE_ADD
和RANGE_DELETE
来做'模拟交换',但是有没有更简单的方法来做到这一点?