You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Hook Form useFieldArray仅删除最后一个元素问题求助

解决React Hook Form useFieldArray删除异常问题

问题根源是列表渲染时未设置唯一key属性,导致React无法正确追踪数组元素的变化,删除操作触发后UI更新异常,表现为总是移除最后一个元素。

修复步骤:

  1. 为数组项添加唯一标识:调用append方法时,给每个新增对象添加唯一id(比如用时间戳生成):
<button type="button" onClick={() => append({ id: Date.now(), name: "" })}>
  Add
</button>
  1. 渲染列表时设置key:遍历fields时,将每个项的id作为key传递给容器元素:
{fields.map((item, index) => (
  <div key={item.id}>
    <input {...register(`test.${index}.name`)} />
    <button type="button" onClick={() => remove(index)}>Delete</button>
  </div>
))}

补充说明:

  • React依赖key识别列表元素的唯一性,缺失或使用不稳定的key(比如循环的index)会导致组件复用逻辑出错,出现UI与数据不匹配的问题。
  • 移除defaultValue,register会自动从fields中获取对应值进行绑定,手动设置defaultValue可能引发不必要的冲突。

内容的提问来源于stack exchange,提问作者Tanjil Hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:15:36