手动调整分页

需求: 一页十条数据,共11条数据,删除第11条数据后(也就是最后一页的最后一条),页面显示暂无数据(这个时候第二页是没数据的,但是查询接口还是保持查询第二页的书数据),应跳转至上一页

下面是解决方案 actionRef

const { setPageInfo, pageInfo, reload } = actionRef.current

  const actionRef = useRef();

      <ProTable
        columns={columnsWithEllipsis}
        actionRef={actionRef}
        

辅助函数:获取最后一页有几条数据

/**
 * 计算最后一页的有几条数据
 *
 * @param {number} totalCount - 总共的条目数量
 * @param {number} pageSize - 每页显示的条目数量
 * @param {number} totalPages - 总页数
 * @returns {number} - 最后一页的条目数量
 */
export const calculateLastPageCount = (totalCount, pageSize, totalPages) => {
  // 计算余数,即除完以后剩下的数量
  const remainder = totalCount % pageSize;
 
  // 如果总共只有一页,则直接返回余数(如果余数为 0 则返回每页数量)
  if (totalPages === 1) {
    return remainder === 0 ? pageSize : remainder;
  } else {
    // 如果不止一页,则最后一页的数量就是余数(如果余数为 0 则返回每页数量)
    return remainder === 0 ? pageSize : remainder;
  }
}

listRes

const [listRes, setListRes] = useState(null)
 
// list 是接口返回的表格相关数据
 
setListRes({
  len: res.list ? res.list.length : 0,
  pageSize: params.pageSize,
  totalPages: res.totalPages,
  totalCount: res.totalCount,
})
let res = await delete(record.id)
const { setPageInfo, pageInfo, reload } = actionRef.current
const LastPageCount = calculateLastPageCount(listRes.totalCount, listRes.pageSize, listRes.totalPages)
/**
 * 1. 删除的是最后一页
 * 2. 删除的数量大于最后一页的总数量
 * 3. 页面向前一页
 * 
 * listRes.totalPages 总页数
 * pageInfo.current 当前页
 * 
 * */
if (listRes.totalPages === pageInfo.current && LastPageCount >= 1) {
  setPageInfo({
    ...pageInfo,
    current: pageInfo.current - 1
  });
} else {
  reload();
}