如何在中继现代(实验)中共享相同的表单来创建和更新对象?

Dua*_*ane 5 relay relayjs relaymodern

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

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

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

Dmi*_*sky 1

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

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