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

Formik隐藏字段提交未返回值及动态设置初始值相关问题咨询

问题根源与解决方案

1. 隐藏字段无法按预期格式提交的问题

你手动给type="hidden"的Field组件绑定了value属性,覆盖了Formik内置的状态绑定逻辑。Formik的所有Field组件默认会自动从initialValues中读取对应name路径的值,也会自动同步状态更新,不需要手动赋值。
你只需要在初始化Formik的initialValues时,提前给每一个friends数组项配置好something、type的默认值即可,提交时会自动按{name: value}的格式携带这两个隐藏字段的值。

2. 可编辑字段无法修改、onChange不生效的问题

  • 你给可编辑Field硬写了value=" ",相当于把受控组件的值写死为空字符串,自然无法修改
  • 你给onChange传的是字符串"formik.handleChange",不是函数引用,触发事件时自然会返回undefined
    可编辑字段的默认值同样统一放在initialValues里配置即可,不需要手动给Field传value属性,Formik会自动完成绑定。

修改后的代码示例

第一步:配置initialValues

// Formik初始化部分
<Formik
  initialValues={{
    friends: yourFriendsArray.map(item => ({
      something: item.something.text, // 隐藏字段默认值
      type: item.something.type, // 隐藏字段默认值
      somethinelse: " " // 可编辑字段默认值,未修改就提交该值
    }))
  }}
  // 其他配置:onSubmit、validationSchema等
>

第二步:简化Field组件写法

<Field
  type="hidden"
  name={`friends[${index}].something`}
/>
<Field
  type="hidden"
  name={`friends[${index}].type`}
/>
<Field
  className={classes.textField}
  component={TextField}
  label={something.text}
  name={`friends[${index}].somethinelse`}
/>

内容的提问来源于stack exchange,提问作者Kareem Etefy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:27:03