项目中遇到这样的问题:在用Table组件勾选功能的时候,在涉及到分页时,我需要拿到两页勾选的数组,但是打印出来的selectedRows总是当前页的数据,(参考第三张照片)
这个是组件自身的问题,和身边同事讨论出一个比较好的处理方法:二维数组拼接
具体思路:将selectedRowKeys作为参数值
具体操作代码如下:
单选操作:
onSelect: (record, selected, selectedRows) => {
setSelectedRowKeys([]);
if(selected) {
setSelectedRowKeys([...selectedRowKeys, record.id]);
}else {
let arr = [...selectedRowKeys];
let index = arr.indexOf(record.id);
arr.splice(index, 1);
setSelectedRowKeys(arr);
}
},
批量选中操作:
onSelectAll: (selected, selectedRows, changeRows) => {
if (selected) {
const newArrayList = [...selectedRowKeys, ...selectedRows.filter(item => item !== undefined).map(item => item.id)];
setSelectedRowKeys([...new Set(newArrayList)]);
} else {
let arr = [...selectedRowKeys];
for ( let i = 0; i < changeRows.length; i++ ) {
for ( let j = 0; j < arr.length; j++ ) {
if (arr[j] === changeRows[i].id) {
arr.splice(j, 1);
j--;
}
}
}
setSelectedRowKeys(arr);
}
},
最后就能拿到两页总的selectedRows数组了~