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' }

                        });

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值