一、首先来看看需求,主要就是一个表格的合并
这里是官方文档给出的关于合并的方法
表头只支持列合并,使用 column 里的 colSpan 进行设置。 表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。
根据他给出的demo可以看出是要合并的第一个数据设置他的colSpan ,而后边不展示的数据给他设置colSpan /rowSpan 为0 就可以,但是这样子的话,根据后端返回的不确定数据就好像有点不好整了是吧(要是后端能直接给你合并的格数,不展示的通过一个啥字段标记一下可能也行,或许有更好的方案,各位大佬评论区指出吧)。
但是,我们可以结合数组的filter() 方法试试,这玩意不是可以筛选符合条件的数据嘛,让他来返回相同的数据没毛病吧。
二、主要代码:
{
title: 'GPS号',
dataIndex: 'gpsNumber',
key: 'gpsNumber',
align: 'center',
render: (value, record, index) => {
const obj = {
children: value,
props: {},
};
let arr = this.state.tableListTest.filter((res) => {
//这里gpsNumber是我需要判断的字段名(相同就合并)
return res.gpsNumber == record.gpsNumber;
});
if (index == 0 || this.state.tableListTest[index - 1].gpsNumber != record.gpsNumber) {
obj.props.rowSpan = arr.length;
} else {
obj.props.rowSpan = 0;
}
return obj;
},
},
三、我这里的部分数据
四、最终的效果
这里的表头也是有一个合并的效果的,官方文档有给出方案: