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

React中使用Formik无法读取Dropdown组件取值该如何解决?

问题原因

你当前使用的Semantic UI Dropdown组件未与Formik的状态管理逻辑连通,Formik仅会自动同步被组件适配、或主动绑定了状态变更回调的表单元素值,因此Dropdown的选择结果不会同步到Formik的values对象中,提交时就会显示为空。

解决方案

方案1:通过Field组件的as属性快速适配(最简写法)

直接将Dropdown作为as参数传递给Formik的Field组件,Formik会自动完成基础的状态绑定:

<FormField>
  <label>City</label>
  <Field
    name="city"
    as={Dropdown}
    placeholder="Select a City"
    fluid
    selection
    options={cityOption}
  />
</FormField>

方案2:手动绑定状态(兼容性更强,适合需要自定义逻辑的场景)

如果方案1不生效,可通过Field的render回调手动处理值的同步,适配Semantic UI Dropdown的非标准事件回调:

<FormField>
  <label>City</label>
  <Field name="city">
    {({ field, form }) => (
      <Dropdown
        placeholder="Select a City"
        fluid
        selection
        options={cityOption}
        value={field.value}
        onChange={(e, data) => form.setFieldValue('city', data.value)}
        onBlur={() => form.setFieldTouched('city', true)}
      />
    )}
  </Field>
</FormField>
注意事项
  • 请确认你在initialValues中已声明city字段,示例:const initialValues = { jobTitle: '', city: '' },未声明的字段Formik不会进行状态监听。
  • 请确认cityOption的结构符合Semantic UI要求,每一项为{ key: 唯一值, text: 展示文本, value: 实际提交值 }的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:27:01