Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在graphql/relay中维护有序列表_Reactjs_Graphql_Relayjs - Fatal编程技术网

Reactjs 在graphql/relay中维护有序列表

Reactjs 在graphql/relay中维护有序列表,reactjs,graphql,relayjs,Reactjs,Graphql,Relayjs,我想按特定顺序显示任务列表。问题是,用户应该能够更改顺序并将其保存到graphql(用户还可以从列表中添加和删除任务)。目前,我们已经将该列表实现为中继连接,添加/删除/更新工作正常。以下是我们正在考虑的: 使graphql返回一个有序列表。然后将该列表复制到组件中的本地状态,并在那里对列表重新排序。然后将更改通知graphql 使graphql在所有任务上返回一个数字,即排序顺序 使graphql返回一个链表。因此,每个任务都会引用列表中的下一个任务 在我看来,每一个都有一些问题。对于有序

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

  • 使graphql返回一个有序列表。然后将该列表复制到组件中的本地状态,并在那里对列表重新排序。然后将更改通知graphql
  • 使graphql在所有任务上返回一个数字,即排序顺序
  • 使graphql返回一个链表。因此,每个任务都会引用列表中的下一个任务
在我看来,每一个都有一些问题。对于有序列表并将其复制到本地状态,我们必须以某种方式处理添加/删除操作,并相应地更新本地状态

对于数字排序顺序,如果我们使用运行的数字,例如1..2..3..,当我们要将数字200移动到数字1和2之间时,我们必须更新许多数字。这似乎有很多更新,我不确定在relay/graphql中是如何处理的

对于链表,在改变顺序的过程中也涉及到很多簿记工作,我不确定在继电器突变中是如何处理的。可能会从变异中返回3个任务(所有更改了指向列表中下一个的指针的任务),并在“FIELDS\u CHANGE”配置中指定


使用继电器/graphql/react时,哪种解决方案最好?其他解决方案也非常受欢迎。

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

  • 常规
    get
    查询返回一个没有任何
    order
    键或类似键的有序列表
  • 通过
    moveBefore
    moveAfter
    变异来移动项目,返回新排序的列表。参数是新的
    itemToMove
    relativeTarget
突变的特征大致如下所示:


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

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

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