Pagination

A long list can be divided into several pages using Pagination, and only one page will be loaded at a time.

When To Use#

  • When it will take a long time to load/render all items.

  • If you want to browse the data by navigating through pages.

Examples

Basic pagination.

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

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

More pages.

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

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

Change pageSize.

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}
    />
    <br />
    <Pagination
      showSizeChanger
      onShowSizeChange={onShowSizeChange}
      defaultCurrent={3}
      total={500}
      disabled
    />
  </>,
  mountNode,
);

Jump to a page directly.

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

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

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

Mini size pagination.

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

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

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

Simple mode.

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

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

Controlled page number.

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);
  • Total 85 items
  • 1
  • 2
  • 3
  • 4
  • 5
  • 20 / page

  • 1-20 of 85 items
  • 1
  • 2
  • 3
  • 4
  • 5
  • 20 / page

You can show the total number of data by setting showTotal.

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

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

Show all configured prop.

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

ReactDOM.render(
  <>
    <Pagination
      total={85}
      showSizeChanger
      showQuickJumper
      showTotal={total => `Total ${total} items`}
    />
  </>,
  mountNode,
);

Use text link for prev and next button.

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

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

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

API#

<Pagination onChange={onChange} total={50} />
PropertyDescriptionTypeDefaultVersion
currentCurrent page numbernumber-
defaultCurrentDefault initial page numbernumber1
defaultPageSizeDefault number of data items per pagenumber10
disabledDisable paginationboolean-
hideOnSinglePageWhether to hide pager on single pagebooleanfalse
itemRenderTo customize item's innerHTML(page, type: 'page' | 'prev' | 'next', originalElement) => React.ReactNode-
pageSizeNumber of data items per pagenumber-
pageSizeOptionsSpecify the sizeChanger optionsstring[][10, 20, 50, 100]
showLessItemsShow less page itemsbooleanfalse
showQuickJumperDetermine whether you can jump to pages directlyboolean | { goButton: ReactNode }false
showSizeChangerDetermine whether to show pageSize select, it will be true when total > 50boolean-
showTitleShow page item's titlebooleantrue
showTotalTo display the total number and rangefunction(total, range)-
simpleWhether to use simple modeboolean-
sizeSpecify the size of Pagination, can be set to smalldefault | smalldefault
responsiveIf size is not specified, Pagination would resize according to the width of the windowboolean-
totalTotal number of data itemsnumber0
onChangeCalled when the page number is changed, and it takes the resulting page number and pageSize as its argumentsfunction(page, pageSize)-
onShowSizeChangeCalled when pageSize is changedfunction(current, size)-
MenuPageHeader