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

Ant Design Pro中ProFormSelect组件如何设置defaultValue?

解决ProFormSelect设置defaultValue无效的问题

ProFormSelect是Ant Design Pro封装的表单组件,它的默认值逻辑和原生Select不同,不能直接照搬原生Select的defaultValue用法,核心原因是它受Form的initialValues全局控制。

下面给你两种可行的解决方案:

方案一:通过Form的initialValues设置(推荐)

直接在包裹它的ProForm组件上配置initialValues,指定对应字段的默认值即可,这是ProForm体系下的标准用法:

import { ProForm, ProFormSelect } from '@ant-design/pro-components';

export default function YourForm() {
  return (
    <ProForm
      initialValues={{ status: 'active' }} // 这里指定status字段的默认值为active
      onFinish={(values) => console.log('提交值:', values)}
    >
      <ProFormSelect
        name="status"
        label="状态"
        options={[
          { label: '激活', value: 'active' },
          { label: '未激活', value: 'inactive' },
          { label: '禁用', value: 'disabled' },
        ]}
      />
    </ProForm>
  );
}

方案二:单独给ProFormSelect设置defaultValue(需注意冲突)

如果一定要单独给组件传defaultValue,需要确保ProForm没有设置initialValues覆盖它,同时组件要处于非受控状态(即不手动控制value):

<ProFormSelect
  name="status"
  label="状态"
  defaultValue="active"
  options={[
    { label: '激活', value: 'active' },
    { label: '未激活', value: 'inactive' },
    { label: '禁用', value: 'disabled' },
  ]}
/>

排查要点

  • 检查是否有接口请求后给表单赋值的逻辑,比如用form.setFieldsValue,如果接口返回的status为空或其他值,会覆盖默认值,这种情况需要在接口数据处理时,将空值替换为'active'
  • 确认name属性和initialValues里的字段名完全一致,大小写敏感

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:45:39