antd React 实现可编辑表格(v2)

这里是第二个版本的 

代码如下:

import React from 'react';
import { Form, Table, Input, Space, Button, InputNumber } from 'antd';
import styler from './index.less';
export default function EditTable(props) {
  const [form] = Form.useForm();
  const onFinish = (values) => {
    console.log(values);
  };
  return (
    <div className={styler.edit_table}>
      <Form
        form={form}
        initialValues={{ table: [{ name: 'lily' }, { name: 'lisa' }] }}
        onFinish={onFinish}
      >
        <Form.Item label colon={false}>
          <Form.List name="table">
            {(fields, { add, remove }) => {
              const rules = [{ required: true, message: '请填充内容!' }];
              return (
                <div>
                  <Table
                    dataSource={fields}
                    columns={[
                      {
                        title: 'name',
                        dataIndex: 'name',
                        key: 'name',
                        render: (_, record) => {
                          return (
                            <Form.Item
                              rules={rules}
                              name={[record.name, 'name']}
                              fieldKey={[record.fieldKey, 'name']}
                            >
                              <Input placeholder="place input name" />
                            </Form.Item>
                          );
                        },
                      },
                      {
                        title: 'age',
                        dataIndex: 'age',
                        key: 'age',
                        render: (_, record) => {
                          return (
                            <Form.Item
                              rules={rules}
                              name={[record.name, 'age']}
                              fieldKey={[record.fieldKey, 'age']}
                            >
                              <Input placeholder="place input age" />
                            </Form.Item>
                          );
                        },
                      },
                      {
                        title: 'address',
                        dataIndex: 'address',
                        key: 'address',
                        render: (_, record, index) => {
                          return (
                            <Form.Item shouldUpdate noStyle>
                              {({ getFieldValue }) =>
                                getFieldValue(['table', index, 'name']) ===
                                'yh' ? (
                                  <Form.Item
                                    rules={rules}
                                    name={[record.name, 'address']}
                                    fieldKey={[record.fieldKey, 'address']}
                                  >
                                    <Input placeholder="pleace input address" />
                                  </Form.Item>
                                ) : (
                                  <Form.Item
                                    rules={rules}
                                    name={[record.name, 'address']}
                                    fieldKey={[record.fieldKey, 'address']}
                                  >
                                    <InputNumber />
                                  </Form.Item>
                                )
                              }
                            </Form.Item>
                          );
                        },
                      },
                      {
                        title: '操作',
                        dataIndex: 'action',
                        key: 'action',
                        render: (text, record) => {
                          return (
                            <Space>
                              <i
                                type="text"
                                onClick={() => add()}
                                className="iconfont iconaddData"
                              />
                              <i
                                type="text"
                                onClick={() => remove(record.name)}
                                className="iconfont icondelete"
                              />
                            </Space>
                          );
                        },
                      },
                    ]}
                  />
                </div>
              );
            }}
          </Form.List>
        </Form.Item>
        <Form.Item>
          <Button type="primary" htmlType="submit">
            提交
          </Button>
        </Form.Item>
      </Form>
    </div>
  );
}
.edit_table {
  :global {
    .ant-row .ant-form-item {
      margin-bottom: 0px !important;
    }
  }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

superTiger_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值