React antd 表格嵌套表格(可展开)

注意: 采用的是React antDsign 4.x版本 

实现效果

代码实现

import { Space, Table } from 'antd';
import React, { useRef } from 'react';

const CheckList = () => {
  const data = [
    {
      id: 1,
      name: '张三',
      age: 18,
      content: [
        {
          id: '1-1',
          text: '我叫张三',
        },
      ],
    },
    {
      id: 2,
      name: '李四',
      age: 20,
      content: [
        {
          id: '2-1',
          text: '我叫李四',
        },
      ],
    },
  ];
  const expandedRowRender = (record) => {
    const columns = [{ title: '自我介绍', dataIndex: 'text', key: 'text' }];
    return <Table columns={columns} dataSource={record.content} pagination={false} bordered />;
  };
  const handle = (type, row) => {
    if (type === '编辑') {
      console.log(row);
    } else {
      console.log(row);
    }
  };
  return (
    <>
      <Table
        dataSource={data}
        rowKey={(record) => record.id}
        expandedRowRender={(record) => expandedRowRender(record)}
        columns={[
          { dataIndex: 'name', title: '名称', width: 200, key: 'name' },
          { dataIndex: 'age', title: '年龄', width: 200, key: 'age' },
          {
            title: '操作',
            key: 'operation',
            align: 'center',
            render: (text, row) => (
              <Space size="middle">
                <a
                  onClick={() => {
                    handle('编辑', row);
                  }}
                >
                  编辑
                </a>
                <a
                  onClick={() => {
                    handle('删除', row);
                  }}
                >
                  删除
                </a>
              </Space>
            ),
          },
        ]}
        size="small"
        style={{ width: '600px' }}
      />
    </>
  );
};

export default CheckList;

注:本人前端小白 ,如有不对的地方还请多多指教

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Design的表格组件支持嵌套表格功能。具体可以通过以下步骤实现: 1. 在columns数组中,添加一个子表格的render方法。该方法返回一个新的表格组件,其中columns属性为子表格的列。 2. 在父表格的dataSource数据中,为每一个需要展示子表格的行添加一个children属性。该属性为一个数组,包含子表格中的数据。同时,子表格数据的格式也需要与父表格数据的格式一致。 下面是一个简单的示例代码: ``` import React, { useState } from 'react'; import { Table } from 'antd'; const columns = [ { title: '姓名', dataIndex: 'name', key: 'name' }, { title: '年龄', dataIndex: 'age', key: 'age' }, { title: '地址', dataIndex: 'address', key: 'address' }, { title: '操作', dataIndex: '', key: 'x', render: () => <a>展开</a>, }, ]; const data = [ { key: 1, name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', children: [ { key: 11, name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, { key: 12, name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ], }, { key: 2, name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ]; const NestedTable = () => { const [expandedRowKeys, setExpandedRowKeys] = useState([]); const onExpand = (expanded, record) => { if (expanded) { setExpandedRowKeys([...expandedRowKeys, record.key]); } else { setExpandedRowKeys(expandedRowKeys.filter((key) => key !== record.key)); } }; return ( <Table columns={columns} dataSource={data} expandedRowKeys={expandedRowKeys} onExpand={onExpand} rowKey="key" expandable={{ expandedRowRender: (record) => ( <Table columns={columns} dataSource={record.children} rowKey="key" /> ), }} /> ); }; export default NestedTable; ``` 在这个示例中,我们创建了一个包含两行数据的父表格。第一行数据包含一个子表格,我们使用了children属性为其指定子表格数据。同时,在columns数组中添加了一个render方法,用于展示子表格。在父表格组件中,我们使用了antd的expandable属性,指定了展开表格的方式和渲染方法。 希望这个示例能够帮助你了解如何在Ant Design的表格组件中实现嵌套表格功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值