已设multiple:false仍可多选,如何让RJSF表单Select组件仅单选?
解决RJSF搭配Ant Design时Select组件无法单选的问题
你遇到的问题核心在于RJSF会优先根据JSON Schema的类型来决定表单组件的行为,而非仅依赖uiSchema的配置。
问题原因
如果你的JSON Schema中cityId字段的类型被定义为array,哪怕你在uiSchema里设置了multiple: false,组件依然会保持多选模式——因为RJSF会认为这个字段需要接收一组值,而非单个值。
解决方案
- 修正JSON Schema的字段类型
确保cityId的类型是单个值类型(比如string或number,根据你的城市ID实际类型选择),示例如下:
{ "type": "object", "properties": { "cityId": { "type": "string", // 若ID是数字则改为"number" "title": "选择城市" } } }
- 简化uiSchema配置(可选)
你的uiSchema配置可以保留,甚至可以去掉multiple: false——因为当schema类型为单个值时,Select组件默认就是单选模式:
...uiSchema, cityId: { "ui:widget": "select", "ui:enumOptions": list.map((c) => ({ value: c.id, label: c.name, })), // "ui:options": { multiple: false }, // 这行可省略,默认即为单选 }, };
调整完成后,Select组件就会强制只能选择单个值了。
内容的提问来源于stack exchange,提问作者Shruthi R
相关产品推荐
相关产品推荐

