我有一个有几个字段的表单,我需要获取一些字段的值,并通过单击按钮将它们保存在一个状态中,然后通过单击提交按钮将所有表单字段数据发送到服务器。有没有任何方法可以在react中完成?
下面是一个示例代码:
在此示例中,用户可以通过单击“Add account info”按钮来添加多个帐户信息。我需要收集表单中“Account Information”部分的值,并将其放入如下数组中:
"accountInfo": [
{
"email": "",
"securityQuestion": ,
"securityAnswer": ""
}
]
最后通过点击提交按钮,所有表单值(包括几个帐户信息)应发送到服务器。
import React, { useCallback } from 'react'
import { Form, Button } from 'antd'
import FormBuilder from 'antd-form-builder'
export default () => {
const [form] = Form.useForm()
const handleFinish = useCallback(values => {
console.log('Submit: ', values)
})
const meta1 = [
{ key: 'name.first', label: 'First Name', required: true },
{ key: 'name.last', label: 'Last Name', required: true },
{ key: 'dob', label: 'Date of Birth', widget: 'date-picker' },
]
const meta2 = [
{
key: 'email',
label: 'Email',
rules: [{ type: 'email', message: 'Invalid email' }],
},
{
key: 'security',
label: 'Security Question',
widget: 'select',
placeholder: 'Select a question...',
options: [{label: "What's your pet's name?", value: 1 }, {label: 'Your nick name?', value:2}],
},
{ key: 'answer', label: 'Security Answer' },
]
const meta3 = {
fields: [
{ key: 'address', label: 'Address' },
{ key: 'city', label: 'City' },
{ key: 'phone', label: 'phone' },
],
}
return (
<Form layout="horizontal" form={form} onFinish={handleFinish} style={{ width: '500px' }}>
<fieldset>
<legend>Personal Information</legend>
<FormBuilder form={form} meta={meta1} />
</fieldset>
<fieldset>
<legend>Account Information</legend>
<FormBuilder form={form} meta={meta2} />
<Form.Item wrapperCol={{ span: 16, offset: 8 }}>
<Button type="primary">
Add account info
</Button>
</Form.Item>
</fieldset>
<fieldset>
<legend>Contact Infomation</legend>
<FormBuilder form={form} meta={meta3} />
</fieldset>
<Form.Item className="form-footer" wrapperCol={{ span: 16, offset: 8 }}>
<Button htmlType="submit" type="primary">
Submit
</Button>
</Form.Item>
</Form>
)
}
1条答案
按热度按时间db2dz4w81#
antd FormInstance接口中有两个键您可能会感兴趣。
getFieldsValue
通过一组字段名获取表单的完整值。getFieldValue
,按字段名获取值。但是,您可以通过使用 htmlType=“submit” 按钮获取这些值并对其执行任何操作:
要使此按钮工作,请不要忘记为表单的键 onFinish 分配一些功能: