首页 > 解决方案 > 如何在中继现代(实验)中共享相同的表单来创建和更新对象?

问题描述

我是中继新手,我正在尝试在并发模式下使用中继现代实验。我已经能够使用 Suspense 和 ErrorBoundary 加载节点、边等。我现在正在研究一种用于创建和更新对象的表单。

我不知道如何在创建和编辑案例中使用相同的表单,因为我无法在创建案例中加载片段——表单字段的初始值设置为默认值。在创建案例中,我没有任何东西可以传递给 useFragment 。

如何创建符合表单所需片段定义的初始值?也许有一种我不知道的模式。我肯定错过了什么。我不想复制表单 UI 组件。

标签: relayjsrelayrelaymodern

解决方案


我认为在 React 中使用 Relay 存储来驱动表单没有意义,因为它真的很复杂:例如,在创建的情况下,您需要将表单中的数据写入一些您使用的临时 ID识别存储中的节点,然后告诉片段容器读取该节点上的字段。然后,在创建或编辑情况下,在表单输入更改事件处理程序中,您将使用commitLocalUpdate()API 更新该节点。这变得非常复杂。

编辑表单的一个更简单的模式,无论您是创建一个新节点还是编辑现有节点,都是在您的 React 组件 ( useState()) 中使用状态驱动表单,然后在您使用 Relay 时使用 Relay完成编辑。在编辑现有节点的情况下,您最终会从 Relay 存储“分叉”状态,使用表单对其进行修改,然后将其持久化。然后,当突变完成时,您可以通过updater函数或突变回复中的字段更新存储。


推荐阅读