工作之余重新整理了下远古的代码,突然看到了这块的逻辑,试试优化了一下表格删除数据时计算页码的相关代码(更新页码)。
/**
* @param pagination { { pageIndex: number, pageSize: number, total: number } } 分页参数
* @param deleteLength { Number } 删除的条数
*/
function clacNewPageIndex(pagination, deleteLength) {
const { pageIndex, pageSize, total } = pagination;
if (deleteLength > total) { throw Error('删除条数大于总数') }
// 判断删除的数据是否在当前页最后一页
const newPageIndex = Math.ceil((total - deleteLength) / pageSize);
return Math.min(pageIndex, newPageIndex); // 防止 newPageIndex < 1,正常情况下不会出现的
}
/* 案例一 */
const deleteLength1 = 5;
const pagination1 = {
pageIndex: 3,
pageSize: 10,
total: 22,
};
console.log(
'案例一: pageIndex 为',
clacNewPageIndex(pagination1, deleteLength1)
);
/* 案例二 */
const deleteLength2 = 1; // 修改删除条数
const pagination2 = {
pageIndex: 3,
pageSize: 10,
total: 22,
};
console.log(
'案例二: pageIndex 为',
clacNewPageIndex(pagination2, deleteLength2)
);
/* 案例三 */
const deleteLength3 = 1;
const pagination3 = {
pageIndex: 2, // 修改当前页码
pageSize: 10,
total: 22,
};
console.log(
'案例三: pageIndex 为',
clacNewPageIndex(pagination3, deleteLength3)
);