react-jsonschema-form如何向@rjsf/antd Form传递额外props(如size)
问题背景
- 基于
react-jsonschema-form+@rjsf/antd(Ant Design适配层)开发表单。 - Ant Design原生
Form组件提供size属性,可统一控制所有Form.Item下输入控件的尺寸。 - 直接给RJSF的Form组件传入
size属性时,属性不会自动透传到底层渲染的Ant Design Form实例,配置失效。
解决方案
单表单属性透传
@rjsf/antd 仅处理RJSF规范定义的固定props,未做未知属性自动透传逻辑。所有需要传递给底层AntD Form的属性,统一收拢到formProps字段传入即可生效:
import Form from '@rjsf/antd'; import validator from '@rjsf/validator-ajv8'; const demoSchema = { type: 'object', properties: { username: { type: 'string', title: '用户名' } } }; export default function FormDemo() { return ( <Form schema={demoSchema} validator={validator} // 所有AntD Form原生属性均放在该对象内配置 formProps={{ size: 'small', // 尺寸可选值:large / middle / small layout: 'vertical' // 其余AntD Form支持的属性(如布局、标签对齐方式等)都可在此配置 }} /> ); }
全局统一尺寸配置
如果项目内存在多个RJSF表单需要统一尺寸,无需逐个配置formProps,直接使用Ant Design的ConfigProvider包裹表单区域,全局设置组件尺寸即可:
import { ConfigProvider } from 'antd'; import Form from '@rjsf/antd'; import validator from '@rjsf/validator-ajv8'; import demoSchema from './schema'; export default function App() { return ( <ConfigProvider componentSize="small"> <Form schema={demoSchema} validator={validator} /> </ConfigProvider> ); }
关键说明
- 不要直接在RJSF Form根组件上传
size、layout这类AntD Form原生属性,这类属性不会被识别,必须放在formProps对象内传递。 formProps内的属性配置规则和原生Ant Design Form完全一致,支持所有官方列出的Form属性。
内容的提问来源于stack exchange,提问作者Luxilon
相关产品推荐
相关产品推荐

