在graphql / relay

时间:2016-12-28 09:48:25

标签: reactjs graphql relayjs

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我们沿着这条道路创建了一个单独的变异,用于相对于另一个项目移动项目:

  • 常规get查询返回没有任何order键或
  • 的有序列表
  • 移动项目由moveBeforemoveAfter突变完成,返回新排序的列表。参数是新的itemToMoverelativeTarget

突变的签名大致如下:

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

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

由于我们没有使用中继,我无法评论如何让中继知道这些变化。