reactjs – 在graphql / relay中维护一个有序列表

我想以特定顺序显示任务列表.问题是,用户应该能够更改顺序并将其保存到graphql(用户还可以从列表中添加和删除任务).目前我们已将列表实现为中继连接,并且添加/删除/更新工作正常.以下是我们现在正在考虑的内容:

>使graphql返回一个有序列表.然后将该列表复制到组件中的本地状态,并在那里重新排序列表.然后只需通知graphql有关更改.
>使graphql在作为排序顺序的所有任务上返回一个数字.
>使graphql返回一个链表.所以每个任务都有一个对列表中下一个的引用.

在我看来,每个都存在一些问题.使用有序列表并将其复制到本地状态,我们必须以某种方式处理添加/删除操作并相应地更新本地状态.

使用数字排序顺序,如果我们使用运行数字,例如1..2..3 ..,当我们想要在1号和2号之间移动数字200时,我们必须更新许多数字.这看起来像很多更新,我不知道这是如何处理继电器/ graphql.

通过链表,还有很多簿记涉及更改顺序,我不确定如何处理中继突变.也许从变异中返回3个任务(所有已将指针更改为列表中下一个的任务)并在“FIELDS_CHANGE”配置中指定?

使用relay / graphql / react时哪个是最佳解决方案?其他解决方案非常受欢迎.

最佳答案 我们沿着路径创建了一个单独的变异,用于移动与另一个项目相关的项目:

>常规get查询返回没有任何订单键等的有序列表
>移动项目由moveBefore或moveAfter变异完成,返回新排序的列表.参数是新的itemToMove和relativeTarget.

突变的签名大致如下所示:

moveAfter(itemToMove:ID!,itemToMoveAfter:ID!):Item []

在另一个项目之前移动项目具有相同的签名&行为,只是服务器端逻辑有点不同.

由于我们没有使用中继,我无法评论如何让中继意识到这些变化.

点赞