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
相关产品推荐
相关产品推荐

