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

Ant Design Table数据源变更时强制跳转至第一页的实现问题

Ant Design Table 数据源变更时强制跳转至第一页解决方案

问题根因

你当前使用的是受控分页模式,主动给pagination属性传入了current绑定自定义状态,此时defaultCurrent仅在组件首次渲染时生效,后续dataSource更新不会自动触发页码重置,因此会停留在上一次访问的页码。

具体修改方案

1. 给页码状态设置初始默认值

将currentPage的初始值设为1,保证组件首次加载时默认停在第一页。

2. 监听数据源变更,触发页码重置

新增useEffect监听tableData的变化,只要数据源更新就主动把页码重置为1。

修改后的完整代码如下:

import { useState, useEffect, Fragment } from 'react';
import { Table } from 'antd';

const TableContent = ({ tableData, title }) => {
  // 给页码设置初始值1
  const [currentPage, setCurrentPage] = useState(1)

  const columns = [
      'stuff'
  ]

  // 新增监听:tableData变更时重置页码为1
  useEffect(() => {
    setCurrentPage(1)
  }, [tableData])

  return (
      <Fragment>
          <Table
              columns={columns}
              dataSource={tableData}
              rowKey={"_id"}
              style={{ padding: '0 50px' }}
              size="small"
              pagination={{
                  defaultPageSize: 7, 
                  onChange: pageNum => {
                      setCurrentPage(pageNum)
                  },
                  current: currentPage
              }}
          />
      </Fragment>
  )
}

注意事项

如果你的tableData是引用类型(数组/对象),需要保证每次数据源更新时传入的是新的引用(比如接口返回新数组、更新时通过展开运算符生成新数组等),否则useEffect不会触发监听逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:18:02