【发布时间】:2015-12-21 14:06:35
【问题描述】:
我需要一些帮助来设计 React 应用单页应用。
我想展示并让用户编辑(通过表单输入)一个复杂的 JSON 结构(具有已知形状),但我无法想象如何将生成的表单中的值绑定到数据结构。 JSON 结构是静态的,我只想让用户编辑值,而不是结构本身。
某些值取决于结构中的其他值(例如,在其他字段中指定字段的最大值)。数据具有嵌套结构,但它们不会 1:1 映射到我的组件(我不控制输入),这使得处理更加复杂(深层组件可以更改表面值)。
例如目的:
data.json
{
"age": 12,
"maxAge": 100,
"name": {
"first": "John",
"last": "Doe"
},
"dogName": "Foo"
}
main.jsx
ReactDOM.render(<Editor data={data} />, mount);
Editor.jsx
<form>
<Person data={props.data} />
<Text defaultValue={props.data.dogName} />
<h2>Settings:</h2>
<Number defaultValue={props.data.maxAge} />
</form>
Person.jsx
<fieldset>
<Text defaultValue={props.data.name.first} />
<Text defaultValue={props.data.name.last} />
<Number max={props.data.maxAge} defaultValue={props.data.age} />
</fieldset>
使用更改事件手动处理每个字段似乎太复杂、令人厌烦(每个组件有数十个字段)并且容易出错……而且我什至不确定如何将更改传播到顶部-内部组件的级别组件。
有什么选择?
【问题讨论】:
标签: forms data-binding architecture reactjs