image.png项目中遇到这样的问题:在用Table组件勾选功能的时候,在涉及到分页时,我需要拿到两页勾选的数组,但是Table组件打印出来的selectedRows总是当前页的数据,(参考第三张照片)
image.png image.png
这个是组件自身的问题,和身边同事讨论出一个比较好的处理方法:二维数组拼接
具体思路:将每一页作为二维数组的下标,将每一页选中的数组作为参数值
具体操作代码如下:
第一步骤:组合成双数组
onSelectChange = (selectedRowKeys,selectedRows) => {
const [doubleArr] = this.state
doubleArr[page ? page - 1 : 0] = selectedRows; //组合成双数组
};
第二步骤:二维数组的扁平化处理(处理为一维数组)
mapRows = (params)=>{
var res = [];
for(var i=0;i<params.length;i++){
if(Array.isArray(params[i])){
res = res.concat(mapRows(params[i]));
}else{
res.push(params[i])
}
}
return res.filter(Boolean); //去掉undefined的情况
}
第三步骤:调用方法,更新状态
let filteredArr = this.mapRows(this.state.doubleArr)
this.setState({
selectedRows : filteredArr
})
最后就能拿到两页总的selectedRows数组了~
网友评论