关键的点
里面嵌套 - 并且把 label放在外层的
中 - 一个 Form.Item内不能有两个 getDecorators
一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child,
当有多个被装饰过的 child 时,help,required,validateStatus 无法自动生成
form4x
form3x
export const itemLayout = {
labelCol: { span: 4 },
wrapperCol: { span: 20 },
};
const { Item } = Form;
<Form {...itemLayout}>
<Item label='新增链接'>
<div className='flex'>
<Item className='mb0 flex1'>
{getFieldDecorator('link', {
initialValue: value.link,
})(<Input placeholder='请输入链接名称' />)}
</Item>
<Item className='mb0 ml8 flex1'>
{getFieldDecorator('url', {
initialValue: value.url,
rules: [{required: true, type: 'url', message: '请输入url'}],
})(<Input placeholder='请输入链接地址' />)}
</Item>
</div>
</Item>
</Form>
antd提供了validateStatus,help,hasFeedback 等属性,
你可以不需要使用 Form.create 和 getFieldDecorator,自己定义校验的时机和内容。
- validateStatus: 校验状态,可选 ‘success’, ‘warning’, ‘error’, ‘validating’。
- hasFeedback:用于给输入框添加反馈图标。
- help:设置校验文案。
错误的写法
<Form.Item label="准确度">
{getFieldDecorator("min", {})(<Input placeholder="最小值" />)}
~
{getFieldDecorator("max", {})(<Input placeholder="最大值" />)}
</Form.Item>
type=’hidden’ 隐藏表单
https://github.com/ant-design/ant-design/issues/19784
<Form.Item name="id">
<Input type="hidden" />
</Form.Item>