【发布时间】:2020-09-12 03:08:46
【问题描述】:
我有一个使用 antd React 库构建的多步骤表单。我根据我所处的阶段有条件地渲染字段,但所有字段都在同一个Form下。
当我记录传递给onFinish 处理程序的values 时,values 不包括表单第一步中的字段。 values["name"] 不存在,但如果我检查 form.getFieldValue("name"),我期望的值会出现在 form 上。
import React, { Fragment } from 'react';
import { Form, Input, DatePicker, Button, Card, Checkbox, InputNumber } from 'antd';
... boilerplate
const [ form ] = Form.useForm();
const onFinish = values => {
// includes "location" but not "name"
console.log(values);
}
let formContent;
switch (stage) {
case 1:
formContent = (
<Fragment>
<Form.Item name="name" label="Name">
<Input />
</Form.Item>
</Fragment>
)
break;
case 2:
formContent = (
<Fragment>
<Form.Item name="Location" label="Location">
<InputNumber />
</Form.Item>
<Button
className="next-button"
type="primary"
htmlType="submit"
>
Create
</Button>
</Form.Item>
</Fragment>
)
break;
default:
formContent = null;
}
return (
<div className="CreateTournamentForm">
<Card
title={title}
>
<Form
name="create-form"
labelCol={{ span: 10 }}
wrapperCol={{ span: 40 }}
layout="horizontal"
size="large"
form={form}
onFinish={onFinish}
initialValues={defaultValues}
>
{ formContent }
</Form>
</Card>
</div>
)
【问题讨论】: