--- order: 5 title: zh-CN: 动态增减表单项 en-US: Dynamic Form Item --- ## zh-CN 动态增加、减少表单项。 ## en-US Add or remove form items dynamically. ````jsx import { Form, Input, Icon, Button, } from 'antd'; let id = 0; class DynamicFieldSet extends React.Component { remove = (k) => { const { form } = this.props; // can use data-binding to get const keys = form.getFieldValue('keys'); // We need at least one passenger if (keys.length === 1) { return; } // can use data-binding to set form.setFieldsValue({ keys: keys.filter(key => key !== k), }); } add = () => { const { form } = this.props; // can use data-binding to get const keys = form.getFieldValue('keys'); const nextKeys = keys.concat(id++); // can use data-binding to set // important! notify form to detect changes form.setFieldsValue({ keys: nextKeys, }); } handleSubmit = (e) => { e.preventDefault(); this.props.form.validateFields((err, values) => { if (!err) { const { keys, names } = values; console.log('Received values of form: ', values); console.log('Merged values:', keys.map(key => names[key])); } }); } render() { const { getFieldDecorator, getFieldValue } = this.props.form; const formItemLayout = { labelCol: { xs: { span: 24 }, sm: { span: 4 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 20 }, }, }; const formItemLayoutWithOutLabel = { wrapperCol: { xs: { span: 24, offset: 0 }, sm: { span: 20, offset: 4 }, }, }; getFieldDecorator('keys', { initialValue: [] }); const keys = getFieldValue('keys'); const formItems = keys.map((k, index) => (