antd表单 Form.Item,Form.List 的自定义数据格式

目录

1. { }

2. [ {},{},{} ]

3. 复杂混合的格式

1){  a : ' ',  b : [ {}, {} ]  }

2){  a : ' ',  b : { c:' ',  d:' ' }  }


1. 常用格式

{ }

  表单内容:

<Form>
    <Form.Item
        name={'name'}
        lable={'用户'}
    > 
        <Input placeholder='请输入'/>
    </Form.Item>
    <Form.Item
        name={'ip'}
        lable={'IP地址'}
    > 
        <Input placeholder='请输入'/>
    </Form.Item>
    <Form.Item
        name={'port'}
        lable={'端口'}
    >
       <Input placeholder='请输入'/>
    </Form.Item>
</Form>

//{ 
//  name:'',
//  ip:'',
//  port:'',
//}

重置内容:    form.setFieldsValue({ neme: 'a'  }); 

2. 对象数组格式

[ {},{},{} ]

 表单内容:

<Form>
<Form.List name="servers">
{(fields)=>{
    retrun (
        <>
          {fields.map((field,index)=>{
              <Form.Item
                key={field.key}
                name={[filed.name, 'name']}
                lable={'用户'}
              > 
                <Input
                    onchange={(e)=>{
                       form.getFiledValue('servers')[index].name = e.target.value;
                    }}
                />
              </Form.Item>
              <Form.Item
                key={field.key}
                name={[filed.name, 'ip']}
                lable={'IP地址'}
              > 
                <Input
                    onchange={(e)=>{
                       form.getFiledValue('servers')[index].ip=e.target.value;
                    }}
                />
              </Form.Item>
              <Form.Item
                key={field.key}
                name={[filed.name, 'port']}
                lable={'端口'}
              >
                <Input
                    onchange={(value)=>{
                       form.getFiledValue('servers')[index].port=value;
                    }}
                />
              </Form.Item>
           });
          }
        </>
    );
}}
</Form.List>
</Form>

//{ 
//  servers:[{name:'',ip:'',port:''},{name:'',ip:'',port:''},{name:'',ip:'',port:''}]
//}

 重置内容:    form.getFiledValue('servers')[index].name = 'a'; 

3. 复杂混合的格式

1)单项和数组组合格式

{  a : ' ',  b : [ {}, {} ]  }

表单内容:

<Form>
 <Form.Item
    name={'name'}
    lable={'用户'}
    > 
    <Input placeholder='请输入'/>
 </Form.Item>
 <Form.List name="ipAndPorts">
 {(fields)=>{
    let items=form.getFieldValue('ipAndPorts');
    retrun (
        <>
          {fields.map((field,index)=>{
              <Form.Item
                key={field.key}
                lable={'IP地址'}
              > 
                <Input
                    defaultValue = {items[index].ip}
                    onchange={(value)=>{
                       form.getFiledValue('ipAndPorts')[index].ip=value;
                    }}
                />
                <span>端口:</span>
                <Input
                    defaultValue = {items[index].port}
                    onchange={(value)=>{
                       form.getFiledValue('ipAndPorts')[index].port=value;
                    }}
                />
              </Form.Item>
           });
          }
        </>
    );
 }}
 </Form.List>
</Form>

//{ 
//  name:'',
//  ipAndports:[{ip:'',port:''},{ip:'',port:''},{ip:'',port:''}]
//}

 重置内容:    form.setFieldsValue({ neme: 'a'  }); 

                       form.getFiledValue('ipAndports')[index].ip = '10.0.0.10'; 

2)单项和对象组合格式

{  a : ' ',  b : { c:' ',  d:' ' }  }

表单内容:

<Form>
 <Form.Item
    name={'name'}
    lable={'用户'}
    > 
    <Input placeholder='请输入'/>
 </Form.Item>
 <Form.List 
    name= {['server','ip']}
    lable={'服务器IP'}
 >
    <Input placeholder='请输入'/>
 </Form.List>
 <Form.List 
    name= {['server','post']}
    lable={'端口'}
 >
    <Input placeholder='请输入'/>
 </Form.List>
</Form>

//{ 
//  name:'',
//  server:{ip:'',port:''},
//}

重置内容:    form.setFieldsValue({ neme: 'a'  }); 

                       form.setFiledValue({

                                server: { ip:  '10.0.0.10' }

                        });

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
antd Form.List 中,一个 Form.Item 可以通过使用 getFieldDecorator 方法来获取自身的值,而获取其他 Form.Item 的值则需要通过 Form.List 的方法进行。例如,可以通过调用 form.getFieldValue 方法来获取其他 Form.Item 的值。具体实现步骤如下: 1. 在 Form.List 中,给每个 Form.Item 一个唯一的 name 属性,例如 name={`items[${index}].name`},其中 index 为当前 Form.Item 的索引。 2. 在 getFieldDecorator 方法中,使用 getFieldValue 方法来获取其他 Form.Item 的值。示例代码如下: ```jsx {getFieldDecorator(`items[${index}].name`, { initialValue: item.name, rules: [{ required: true, message: 'Please input name' }], })( <Input placeholder="Enter name" /> )} {getFieldDecorator(`items[${index}].age`, { initialValue: item.age, rules: [{ required: true, message: 'Please input age' }], })( <InputNumber placeholder="Enter age" min={0} /> )} {getFieldDecorator(`items[${index}].email`, { initialValue: item.email, rules: [{ required: true, message: 'Please input email' }], })( <Input placeholder="Enter email" /> )} ``` 3. 在需要获取其他 Form.Item 值的地方,调用 form.getFieldValue 方法。示例代码如下: ```jsx const handleSubmit = e => { e.preventDefault(); form.validateFields((err, values) => { if (!err) { // 获取其他 Form.Item 值 const names = form.getFieldValue('items').map(item => item.name); console.log(names); // 提交表单 console.log('Received values of form: ', values); } }); }; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值