提问人:program_bumble_bee 提问时间:10/18/2023 更新时间:10/19/2023 访问量:29
使用 antd 响应动态表单输入
React dynamic Form inputs using antd
问:
我正在尝试根据NextJs中的请求创建动态表单字段。到目前为止,基本代码如下所示:
return (
<>
<Row
style={{
justifyContent: "space-between",
}}
>
<Col span={20}>
<Form
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
label="Title"
name="title"
rules={[
{
required: true,
message: "Title is required",
},
]}
>
<Input placeholder="Enter a title for the article" />
</Form.Item>
<Form.Item
label="Sub-Title"
name="subTitle"
rules={[
{
required: true,
message: "Sub Title is required",
},
]}
>
<Input placeholder="Enter a sub-title for the article " />
</Form.Item>
<Form.Item
label="Content"
name="content1"
rules={[
{
required: true,
},
]}
>
<TextArea rows={10} placeholder="Add Article Paragraph" />
</Form.Item>
<Form.Item wrapperCol={{ offset: 8, span: 16 }}>
<input type="file" name="file" multiple onChange={uploadImages} />
</Form.Item>
<Form.Item wrapperCol={{ offset: 8, span: 16 }}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
</Col>
</Row>
</>
);
我正在使用 AntD 进行 UI 设计。我需要扩展此功能的是单击“添加更多内容”按钮,它应该添加更多多行输入框,其名称(或 id)应变为 content2、content 等,以便单篇文章 JSON 对象的最终结构应如下所示:
{
title: '',
subTitle: '',
content: [
'content1': 'content one data',
'content2': 'content two data'
]
}
我知道我可以使用 React 的 useState() 钩子并在其中定义表单字段的对象,并在每次单击按钮时推送一个新对象,但这种模式对我来说似乎不太有效,因为我正在尝试利用 Antd 库本身。 如果有任何线索提供更好的解决方案,将不胜感激。
答:
0赞
J.chen
10/19/2023
#1
您可以按列表进行渲染,例如:<Form.Item>
const FormConfig = [
{
label: "Title",
name: "Title",
...
},
{
label: "Content",
name: "Content",
components: [
<TextArea rows={10} placeholder="Add Article Paragraph" />
]
}
]
每次单击该按钮时,只需将新的组件列表推送到即可。<TextArea>
评论
0赞
program_bumble_bee
10/19/2023
嗨 @J.chen 您能否帮助详细说明代码示例,以及您建议如何使用 FormConfig?谢谢
评论
add
<Form
form