基于ant.design做一个可编辑的table表格,且实现可校验样式、增加、删除数据

本文介绍如何在React中使用Form.List组件结合Table实现动态增删表单项,并通过示例代码展示了具体实现过程,包括如何设置初始值、定义表单字段及控制按钮等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要利用Form.List的field进行拓展,结合table使用

嵌套表单字段需要对 field 进行拓展,将 field.name 和 field.fieldKey 应用于控制字段。

// 只贴关键代码
const onFinish = (values)=>{

	console.log(values) // 可以得到table
}

<Form initialValues={ {table:[{name:'lily'},{name:'lisa'}]} } onFinish={ onFinish } >

<Form.Item
        label="测试table"
      >
        <Form.List name="table">
          {(fields, {add, remove}) => {
            const rules = [{required: true, message: '请填充内容!'}];
            return (
              <div>
                <Table dataSource={fields} columns={[
                  {
                    title:'姓名',
                    dataIndex:'name',
                    key:'name',
                    render:(text,record)=>{
                      return <Form.Item
                        rules={rules}
                        name={[record.name, "name"]}
                        fieldKey={[record.fieldKey, "name"]}
                      >
                        <Input placeholder="姓名" />
                      </Form.Item>
                    }
                  },
                  {
                    title:'年龄',
                    dataIndex:'age',
                    key:'age',
                    render:(text,record)=>{
                      return <Form.Item
                        rules={rules}
                        name={[record.name, "age"]}
                        fieldKey={[record.fieldKey, "age"]}
                      >
                        <Input placeholder="年龄" />
                      </Form.Item>
                    }
                  },
                  {
                    title:'地址',
                    dataIndex:'address',
                    key:'address',
                    render:(text,record)=>{
                      return <Form.Item
                        rules={rules}
                        name={[record.name, "address"]}
                        fieldKey={[record.fieldKey, "address"]}
                      >
                        <Input placeholder="地址" />
                      </Form.Item>
                    }
                  },
                  {
                    title:'操作',
                    dataIndex:'action',
                    key:'action',
                    render:(text,record)=>{
                      return <>
                      <Button onClick={()=>add()}>新增</Button>
                      <Button onClick={()=>remove(record.name)}>删除</Button>
                      </>
                    }
                  }
                ]} />
              </div>
            );
          }}
        </Form.List>
      </Form.Item>

</Form>
  • 实现效果图
  1. 输入框为空时则提示输入
    在这里插入图片描述
    2、点击submit校验所有输入框
    在这里插入图片描述
  • 增加、删除按钮可以动态增加删除数列数据条数

实现思想参考网站官网讲解

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值