一个潜在的解决方案可能是利用expandIconColumnIndex
,一个可以传递给可扩展 antd 的 propTable
组件以及为扩展器添加额外的行。通过这样做,您可以设置expandIconColumnIndex
到最后(空)行的索引(在您的情况下索引为 4),这样图标将出现在Delete
行动。这将避免在左侧创建空间,并将图标移动到最右侧的列。这是在给定代码的情况下需要最少重构的方法。以下是您更新的专栏。
const columns = [
{ title: "Name", dataIndex: "name", key: "name" },
{ title: "Age", dataIndex: "age", key: "age" },
{ title: "Address", dataIndex: "address", key: "address" },
{
title: "Action",
dataIndex: "",
key: "x",
render: (r) => <div>
<a>Delete</a>
<a onClick={()=>expandRows(r.key)}> ex</a>
</div>
},
{ title: "", dataIndex: "", key: "expand", width: 1},
];
这是更新的Table
.
<Table
expandIconColumnIndex={4}
columns={columns}
dataSource={data}
expandIcon={({ expanded, onExpand, record }) =>
expanded ? (
<UpOutlined style={{float: 'right'}} onClick={e => onExpand(record, e)} />
) : (
<DownOutlined onClick={e => onExpand(record, e)} />
)
}
expandable={{
expandedRowRender: record => <p style={{ margin: 0 }}>{renderTable()}</p>
}}
/>
为了删除嵌套表中的左侧空间,您需要覆盖 Ant Design 的 CSS,其中包含更多嵌套表的填充,以充当缩进并将其与表的其余部分区分开来。我建议你保持原样,但如果你真的不想有这个空间,你可以通过添加 className 来覆盖它们的样式parentTable
到你的第一张桌子,然后nestedTable
对于嵌套表(位于renderTable
)。然后将以下 CSS 添加到您的样式表中。
.parentTable
table
tbody
.ant-table-expanded-row.ant-table-expanded-row-level-1
> td {
padding: 0px !important;
}
.nestedTable > div > div > div {
width: 100%;
margin-left: 0px !important;
margin-right: 0px !important;
}
这是工作中的代码沙箱 https://codesandbox.io/s/proud-dawn-97qp9?file=/index.js.