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

如何在react-hook-form中将数值注册为嵌套属性?

如何在react-hook-form中正确设置数值型键的嵌套对象属性?

问题描述

我需要让表单中的totals属性是一个包含数值型键的嵌套对象,预期结构如下:

{
  "totals": {
      "0": {
        "value": 0
      }
    }
}

但使用react-hook-form的setValue方法时,执行以下代码:

setValue(`totals.2`, {
  value: 0,
});

得到的结果不符合预期,totals被自动转成了数组:

{
  "totals": [, , {
        "value": 0
      }]
}

解决方法

方法1:使用括号语法指定对象键

react-hook-form会把.后跟随的数字默认解析为数组索引,改用括号包裹数值键名,就能强制它识别为对象的属性:

setValue(`totals['2']`, { value: 0 });

执行后会得到预期的对象结构:

{
  "totals": {
      "2": {
        "value": 0
      }
    }
}

方法2:初始化时明确totals为对象类型

在调用useForm时,给defaultValues设置totals为初始空对象,避免react-hook-form自动推断为数组类型:

const { register, setValue } = useForm({
  defaultValues: {
    totals: {}
  }
});

之后除了用括号语法,也可以通过更新整个对象的方式设置属性:

setValue('totals', prevTotals => ({
  ...prevTotals,
  '2': { value: 0 }
}));

内容的提问来源于stack exchange,提问作者Charles Semaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:07:07