我正在编写表单控件,以允许用户组装复杂的规则结构,这正在创建一些复杂的嵌套表单元素。我发现很难找到可以帮助我减少样板的反应成分库。
我很想写自己,但觉得我不可能成为解决这个问题的第一人。
表单元素树可能看起来像这样:
Text Input
High level control
|- Select input
|- Complex control 1 (only shown if select value 1 is chosen)
| |- Text input
| |- Conditional Input
| |- Text input
| |- Select
| |- Text input (shown/hidden depending on the select)
|
|- Complex control 2 (only shown if select value 2 is chosen)
etc
这样做的原因是,例如Conditional Input
用于其他上下文,因此需要自我控制,自行处理隐藏/显示的文本输入,以便可以轻松地将其插入到该应用程序。同样,High level control
也可以相同的方式重复使用。
我所见过的所有表单库似乎都假定它们正在使用完整的<form>
元素,而当我真正在寻找可以在字段级别使用的东西时:可以使用<select>
或<input>
的JSX / HTML进行包装,以在该字段更改时处理父级更新,并允许父级告诉元素呈现验证错误。
就像我说的那样,我当然不能成为第一个解决此问题的人,所以我真的不擅长谷歌搜索吗?还是我的设计与React的做事方式不合适?