如何在中继现代(实验)中共享创建和更新对象的相同形式



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

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

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

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

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

最新更新