【发布时间】:2020-09-29 18:47:51
【问题描述】:
我的反应应用程序从用户那里获取数据,并在用户单击SUBMIT 按钮时输出它们。
现在用户打开应用程序出现一个数字输入。在那里他可以设置一个数字,例如2。之后出现2个框,用户可以在其中add fields单击按钮+。在每个字段中,用户必须添加他的姓名和姓氏。现在该应用程序可以工作,但没有以正确的方式。
现在,如果用户在第一个框中添加他的用户名和姓氏并点击SUBMIT,所有内容都会出现在:
const onFinish = values => {
const res = {
data: [dataAll]
};
console.log("Received values of form:", res);
};
但是如果用户点击add fields 按钮添加另一个输入,第一个数据就会消失。同样的问题是当用户在 2 个框中添加数据时,数据只是从最后一个框保存。
function handleInputChange(value) {
const newArray = Array.from({ length: value }, (_, index) => index + 1);
setNr(newArray);
}
const onFinish = values => {
const res = {
data: [dataAll]
};
console.log("Received values of form:", res);
};
return (
<div>
<Form name="outter" onFinish={onFinish}>
{nr.map(i => (
<div>
<p key={i}>{i}</p>
<Child setDataAll={setDataAll} nr={i} />
</div>
))}
<Form.Item
name={["user", "nr"]}
label="Nr"
rules={[{ type: "number", min: 0, max: 7 }]}
>
<InputNumber onChange={handleInputChange} />
</Form.Item>
<Form.Item>
<Button htmlType="submit" type="primary">
Submit
</Button>
</Form.Item>
</Form>
</div>
);
};
点击提交后的预期结果是:
data:[
{
nr:1,
user: [
{
firstName:'John',
lastName: 'Doe'
},
{
firstName:'Bill',
lastName: 'White'
}
]
},
{
nr:2,
user: [
{
firstName:'Carl',
lastName: 'Doe'
},
{
firstName:'Mike',
lastName: 'Green'
},
{
firstName:'Sarah',
lastName: 'Doe'
}
]
},
]
....
// object depend by how many fields user added in each nr
问题:如何达到上述结果?
演示:https://codesandbox.io/s/wandering-wind-3xgm7?file=/src/Main.js:288-1158
【问题讨论】:
标签: javascript reactjs