Antd的嵌套表格-点击当前行异步获取子表格数据

描述一下需求:使用Antd的嵌套表格写的,点击当前行需要请求当前行子表格数据,同时可以展开多行,然后在更换查询条件时,表格展开的行,都合起来。

因为项目保密性问题,就用Antd官方示例截图,凑合看吧:
1,点击当前行,再去请求它的子表格数据,子表格数据都是不一样的
2,同时可以展开多行
3,在切换上面的搜索条件后,所有展开的行合起来
在这里插入图片描述
我被卡在哪里了呢,就是这个子表格数据时点击当前行来的,但是要同时展开多个,写过并且看到我这篇文章的童鞋,应该知道,会造成只有最后一个点击行的子表格有数据,你又不能在展开行发生变化的时候,去循环请求接口,拿到数据,这太蠢了 ,然后历经各种办法得出:
在这里插入图片描述
然后就是第二个问题,切换上面的搜索条件后,所有展开行都合起来,绑上属性expandedRowKeys展开行的数组,初始值是空,再写上展开行变换事件,在事件里面设置属性expandedRowKeys,在搜索条件改变的时候,将expandedRowKeys再次置空:
在这里插入图片描述

const [expandRows, setExpandRows] = useState();
点击搜索:
setExpandRows([])

就酱~目前仍处于对react配合Antd的深层摸索阶段
路过大神请指教~

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Ant Design 的 Table 组件中嵌套表格,需要对数据一些处理。以下是一个示例: ```jsx import React, { useState } from 'react'; import { Table } from 'antd'; const data = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', children: [ { key: '11', name: 'Child Brown', age: 16, address: 'New York No. 2 Lake Park', }, ], }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', children: [ { key: '21', name: 'Child Green 1', age: 16, address: 'London No. 2 Lake Park', }, { key: '22', name: 'Child Green 2', age: 18, address: 'London No. 3 Lake Park', }, ], }, ]; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, ]; const expandedRowRender = (record) => { const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, ]; const data = record.children.map((child) => ({ ...child, key: child.key })); return <Table columns={columns} dataSource={data} pagination={false} />; }; const TableWithNestedTable = () => { const [expandedRowKeys, setExpandedRowKeys] = useState([]); const handleExpand = (expanded, record) => { setExpandedRowKeys(expanded ? [record.key] : []); }; return ( <Table columns={columns} dataSource={data} expandedRowRender={expandedRowRender} onExpand={handleExpand} expandedRowKeys={expandedRowKeys} /> ); }; export default TableWithNestedTable; ``` 上面的代码中,我们通过 `data` 定义了表格数据。每个数据项都有一个 `children` 属性,它是一个组,用于嵌套表格。 在 `columns` 中,我们只定义了三列,因为表格中的列与父表格中的列相同。 `expandedRowRender` 函用于渲染表格。它接收一个参 `record`,即当前数据项。我们可以通过 `record.children` 获取表格数据,并且使用 `map` 方法将其转换为 Ant Design Table 组件所需的格式。 在 `TableWithNestedTable` 组件中,我们使用 `useState` 定义了一个状态变量 `expandedRowKeys`,用于存储展开的键值。 在 `handleExpand` 函中,我们通过 `setExpandedRowKeys` 方法将展开的键值添加到 `expandedRowKeys` 组中。这个函会在用户点击展开/收起按钮时触发。 最后,在 `Table` 组件中,我们通过 `expandedRowRender` 属性将表格渲染函传递给 Ant Design Table 组件,并且通过 `onExpand` 和 `expandedRowKeys` 属性控制展开的状态。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值