如何在不修改Schema的情况下,将RJSF表单UI中的对象属性分组
RJSF表单字段可视化分组解决方案咨询
问题背景
我有一个简单的单层级RJSF Schema:
{ "type": "object", "properties": { "foo": { "type": "string", "title": "Foo" }, "bar": { "type": "string", "title": "Bar" }, "baz": { "type": "integer", "title": "Baz" } } }
我需要将这些属性可视化划分为带标题的组,实现和把属性分组到带标题子对象完全一致的视觉效果(比如分两组显示,每组有独立标题,包含对应字段),但有个核心要求:仅做视觉层面的调整,绝不因为展示需求修改原Schema的结构。
我自己梳理了两种可行方向,但都遇到了问题:
方向一:按组渲染对象属性
- 原本考虑用Object主题模板,但我用的是默认bootstrap3主题,内置的
ObjectFieldTemplate并没有从@rjsf/core导出,手动重实现它的所有行为显然不是好主意 - 我知道可以在把Schema传给
<Form>前先做转换,但这样还得同步在传入<Form>和onChange时转换formData,这种方式不够声明式,我不太倾向采用
方向二:在字段间插入标题
- 想做一个类似伪字段的自定义小部件,提交表单时不会给
formData添加新属性,但在Schema中注入伪属性再在onChange时移除的方式太不规范 - 退一步想做
ui:TextWithHeadlineWidget这类自定义小部件,在指定字段上方插入标题,但同样遇到了和Object模板一样的问题:不知道怎么导入并复用内置小部件,没法基于原有实现做包装
请问我还有什么更好的解决方案?感谢你的时间🙏
内容的提问来源于stack exchange,提问作者Michal Kurz
相关产品推荐
相关产品推荐

