You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MUI React Table Pagination分页异常:新页内容追加而非切换

问题解决思路

1. 修复分页数据截取的错误

你的代码里slice的结束位置多减了1,导致每页数据少一条,且分页切换时数据范围计算错误,这是内容错乱的核心原因之一。

正确的slice用法是slice(startIndex, endIndex),其中endIndex是不包含在截取结果里的,所以分页截取应该写成:

this.state.datas.slice(
  this.state.page * this.state.rowsPerPage,
  this.state.page * this.state.rowsPerPage + this.state.rowsPerPage
)

原来的-1会让每页少拿一条数据,而且当切换页码时,新旧数据的截取范围可能重叠,造成“追加”的视觉错误。

2. 修复行元素的Key问题

你现在用row.data[0]作为StyledTableRow的key,如果不同页的行存在相同的data[0]值,React的diff算法会误以为这是同一个组件,不会重新渲染,而是复用旧组件并更新内容,这会直接导致页面内容错乱。

看你的代码里有row.dataIx字段,这应该是每行的唯一索引,把它作为key才是正确的:

<StyledTableRow key={row.dataIx} sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
  onClick={() => this.setState({selectedRow: row.dataIx}) }>

3. 验证emptyRows的计算逻辑(可选)

如果修复上面两点后还有问题,检查emptyRows的计算是否正确。emptyRows应该是Math.max(0, this.state.rowsPerPage - (this.state.rows - this.state.page * this.state.rowsPerPage)),确保空行的高度计算不会影响正常行的渲染。

把这两处修改后,分页切换时就能正确刷新内容,不会出现追加或错乱的问题了。

内容的提问来源于stack exchange,提问作者user21551525

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:17:09