Pagination分页

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

何时使用

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

  • 可切换页码浏览数据。

代码演示

Pagination 分页 - 图1

基本

基础分页。

  1. import { Pagination } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Pagination
  4. defaultCurrent={1}
  5. total={50}
  6. tiny={false}
  7. showTotal={false}
  8. showSizeChanger={false}
  9. />, mountNode);

Pagination 分页 - 图2

更多

更多分页。

  1. import { Pagination } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Pagination
  4. defaultCurrent={6}
  5. total={500}
  6. tiny={false}
  7. showTotal={false}
  8. showSizeChanger={false}
  9. />, mountNode);

Pagination 分页 - 图3

改变

改变每页显示条目数。

  1. import { Pagination } from 'choerodon-ui';
  2. function onShowSizeChange(current, pageSize) {
  3. console.log(current, pageSize);
  4. }
  5. ReactDOM.render(
  6. <Pagination
  7. tiny={false}
  8. showSizeChangerLabel={false}
  9. showTotal={false}
  10. onShowSizeChange={onShowSizeChange}
  11. defaultCurrent={3}
  12. total={500}
  13. />,
  14. mountNode);

Pagination 分页 - 图4

跳转

快速跳转到某一页。

  1. import { Pagination } from 'choerodon-ui';
  2. function onChange(pageNumber) {
  3. console.log('Page: ', pageNumber);
  4. }
  5. ReactDOM.render(
  6. <Pagination
  7. tiny={false}
  8. showSizeChangerLabel={false}
  9. showTotal={false}
  10. showSizeChanger={false}
  11. showQuickJumper
  12. defaultCurrent={2}
  13. total={500}
  14. onChange={onChange}
  15. />,
  16. mountNode,
  17. );

Pagination 分页 - 图5

尺寸

尺寸。

  1. import { Pagination } from 'choerodon-ui';
  2. function showTotal(total) {
  3. return `Total ${total} items`;
  4. }
  5. ReactDOM.render(
  6. <div>
  7. <Pagination tiny={false} size="large" total={50} showTotal={false} showSizeChanger={false} />
  8. <Pagination tiny={false} size="large" total={50} showTotal={false} showSizeChanger showQuickJumper />
  9. <Pagination tiny={false} size="large" total={50} showTotal={showTotal} showSizeChanger={false} />
  10. <Pagination tiny={false} size="small" total={50} showTotal={false} showSizeChanger={false} />
  11. <Pagination tiny={false} size="small" total={50} showTotal={false} showSizeChanger showQuickJumper />
  12. <Pagination tiny={false} size="small" total={50} showTotal={showTotal} showSizeChanger={false} />
  13. </div>,
  14. mountNode);

Pagination 分页 - 图6

微型

微型版本。

  1. import { Pagination } from 'choerodon-ui';
  2. function showTotal(total) {
  3. return `Total ${total} items`;
  4. }
  5. ReactDOM.render(
  6. <div>
  7. <Pagination total={50} />
  8. <Pagination total={50} showSizeChanger showQuickJumper />
  9. <Pagination total={50} showTotal={showTotal} />
  10. </div>,
  11. mountNode);

Pagination 分页 - 图7

简洁

简单的翻页。

  1. import { Pagination } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <Pagination simple defaultCurrent={2} total={50} />,
  4. mountNode);

Pagination 分页 - 图8

受控

受控制的页码。

  1. import { Pagination } from 'choerodon-ui';
  2. class App extends React.Component {
  3. state = {
  4. current: 3,
  5. }
  6. onChange = (page) => {
  7. console.log(page);
  8. this.setState({
  9. current: page,
  10. });
  11. }
  12. render() {
  13. return (
  14. <Pagination
  15. current={this.state.current}
  16. onChange={this.onChange}
  17. total={50}
  18. tiny={false}
  19. showTotal={false}
  20. showSizeChanger={false}
  21. />
  22. );
  23. }
  24. }
  25. ReactDOM.render(<App />, mountNode);

Pagination 分页 - 图9

总数

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

  1. import { Pagination } from 'choerodon-ui';
  2. ReactDOM.render(
  3. <div>
  4. <Pagination
  5. total={85}
  6. showTotal={total => `Total ${total} items`}
  7. pageSize={20}
  8. defaultCurrent={1}
  9. tiny={false}
  10. showSizeChanger={false}
  11. />
  12. <br />
  13. <Pagination
  14. total={85}
  15. showTotal={(total, range) => `${range[0]}-${range[1]} of ${total} items`}
  16. pageSize={20}
  17. defaultCurrent={1}
  18. tiny={false}
  19. showSizeChanger={false}
  20. />
  21. </div>,
  22. mountNode);

Pagination 分页 - 图10

上一步和下一步

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

  1. import { Pagination } from 'choerodon-ui';
  2. function itemRender(current, type, originalElement) {
  3. if (type === 'prev') {
  4. return <a>Previous</a>;
  5. }
  6. if (type === 'next') {
  7. return <a>Next</a>;
  8. }
  9. return originalElement;
  10. }
  11. ReactDOM.render(
  12. <Pagination tiny={false} showTotal={false} showSizeChanger={false} total={500} itemRender={itemRender} />,
  13. mountNode);

API

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