Pagination分页

采用分页的形式分隔长列表,每次只加载一个页面。

何时使用#

  • 当加载/渲染所有数据将花费很多时间时;

  • 可切换页码浏览数据。

代码演示

基础分页。

expand codeexpand code
import { Pagination } from 'antd';

ReactDOM.render(<Pagination defaultCurrent={1} total={50} />, mountNode);

更多分页。

expand codeexpand code
import { Pagination } from 'antd';

ReactDOM.render(
  <Pagination defaultCurrent={6} total={500} />
, mountNode);

改变每页显示条目数。

expand codeexpand code
import { Pagination } from 'antd';

function onShowSizeChange(current, pageSize) {
  console.log(current, pageSize);
}

ReactDOM.render(
  <Pagination showSizeChanger onShowSizeChange={onShowSizeChange} defaultCurrent={3} total={500} />
, mountNode);

快速跳转到某一页。

expand codeexpand code
import { Pagination } from 'antd';

function onChange(pageNumber) {
  console.log('Page: ', pageNumber);
}

ReactDOM.render(
  <Pagination showQuickJumper defaultCurrent={2} total={500} onChange={onChange} />,
  mountNode
);

迷你版本。

expand codeexpand code
import { Pagination } from 'antd';

function showTotal(total) {
  return `Total ${total} items`;
}

ReactDOM.render(
  <div>
    <Pagination size="small" total={50} />
    <Pagination size="small" total={50} showSizeChanger showQuickJumper />
    <Pagination size="small" total={50} showTotal={showTotal} />
  </div>
, mountNode);
  • 5

简单的翻页。

expand codeexpand code
import { Pagination } from 'antd';

ReactDOM.render(
  <Pagination simple defaultCurrent={2} total={50} />
, mountNode);

受控制的页码。

expand codeexpand code
import { Pagination } from 'antd';

class App extends React.Component {
  state = {
    current: 3,
  }
  onChange = (page) => {
    console.log(page);
    this.setState({
      current: page,
    });
  }
  render() {
    return <Pagination current={this.state.current} onChange={this.onChange} total={50} />;
  }
}

ReactDOM.render(<App />, mountNode);

通过设置 showTotal 展示总共有多少数据。

expand codeexpand code
import { Pagination } from 'antd';

ReactDOM.render(
  <div>
    <Pagination
      total={85}
      showTotal={total => `Total ${total} items`}
      pageSize={20}
      defaultCurrent={1}
    />
    <br />
    <Pagination
      total={85}
      showTotal={(total, range) => `${range[0]}-${range[1]} of ${total} items`}
      pageSize={20}
      defaultCurrent={1}
    />
  </div>
, mountNode);

修改上一步和下一步为文字链接。

expand codeexpand code
import { Pagination } from 'antd';

function itemRender(current, type, originalElement) {
  if (type === 'prev') {
    return <a>Previous</a>;
  } else if (type === 'next') {
    return <a>Next</a>;
  }
  return originalElement;
}

ReactDOM.render(
  <Pagination total={500} itemRender={itemRender} />
, mountNode);

API#

<Pagination onChange={onChange} total={50} />
参数说明类型默认值
current当前页数number-
defaultCurrent默认的当前页数number1
total数据总数number0
defaultPageSize默认的每页条数number10
pageSize每页条数number-
onChange页码改变的回调,参数是改变后的页码及每页条数Function(page, pageSize)noop
showSizeChanger是否可以改变 pageSizebooleanfalse
pageSizeOptions指定每页可以显示多少条string[]'10', '20', '30', '40'
onShowSizeChangepageSize 变化的回调Function(current, size)noop
showQuickJumper是否可以快速跳转至某页booleanfalse
size当为「small」时,是小尺寸分页string""
simple当添加该属性时,显示为简单分页boolean-
showTotal用于显示数据总量和当前数据顺序Function(total, range)-
itemRender用于自定义页码的结构,可用于优化 SEO(page, type: 'page' | 'prev' | 'next', originalElement) => React.ReactNode-