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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:27:22