首页 > 解决方案 > 在 useFieldArray 中编辑单个项目

问题描述

我正在使用和喜爱react-hook-form. 我遇到了一个问题,我有一个项目列表(比如说在左列中),然后当您单击任何项​​目时,它将在右列中显示所选项目的编辑组件。问题是当我在项目之间切换时,嵌套数组值似乎无法正确更新数据。

我想我明白,因为没有为每个父项创建一个新的编辑组件(我只是将选定的索引向下传递),所以嵌套useFieldArray在编辑组件中仍然引用第一个父项。如果是这种情况,我不确定如何确保useFieldArray为每个被选中的项目创建一个新项目。

这是一个复制问题的代码框:

https://codesandbox.io/s/dreamy-brattain-r74lx

任何帮助深表感谢。

标签: react-hook-form

解决方案


我认为您可以在组件内映射childItems您观看的道具,而不是使用. 当您使用时,将在附加新的子项目后重新渲染。item<Details />fieldswatch<Details />

编辑 gracious-hooks-534g3

如果您的<Details />组件应该变得更复杂,我还建议在useWatch此处使用而不是通过watch. 检查文档中的此报价useWatch

行为类似于 watch API,但是,这将隔离组件级别的重新渲染,并可能为您的应用程序带来更好的性能。

这是一个使用示例useWatch

编辑 dazzling-khorana-k1ddm


推荐阅读