Pagination 翻页器

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

何时使用

在有大量内容展现需要进行分页加载处理的时候。

API

翻页器

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内联样式Object-
type分页组件类型可选值:'normal', 'simple', 'mini'Enum'normal'
shape前进后退按钮样式可选值:'normal', 'arrow-only', 'arrow-prev-only', 'no-border'Enum'normal'
size分页组件大小可选值:'small', 'medium', 'large'Enum'medium'
current(受控)当前页码Number-
defaultCurrent(非受控)初始页码Number1
onChange页码发生改变时的回调函数签名:Function(current: Number, e: Object) => void参数:current: {Number} 改变后的页码数e: {Object} 点击事件对象Function() => {}
total总记录数Number100
pageShowCount页码显示的数量,更多的使用…代替Number5
pageSize一页中的记录数Number10
pageSizeSelector每页显示记录数量选择器类型可选值:false, 'filter', 'dropdown'Enumfalse
pageSizeList每页显示记录数量选择器可选值Array<Number>5, 10, 20
pageSizePosition每页显示记录数量选择器在组件中的位置可选值:'start', 'end'Enum'start'
onPageSizeChange每页显示记录数量改变时的回调函数签名:Function(pageSize: Number) => void参数:pageSize: {Number} 改变后的每页显示记录数Function() => {}
hideOnlyOnePage当分页数为1时,是否隐藏分页器Booleanfalse
showJumptype 设置为 normal 时,在页码数超过5页后,会显示跳转输入框与按钮,当设置 showJump 为 false 时,不再显示该跳转区域Booleantrue
link设置页码按钮的跳转链接,它的值为一个包含 {page} 的模版字符串,如:http://xxx.com/{page}String-
locale自定义国际化文案对象Object-
language自定义国际化语言可选值:'zh-cn', 'en-us', 'zh-tw'Enum-

代码示例

受控分页

受控分页,是指分页组件的状态由父组件维护,组件自身只负责渲染其父组件传递的值,父组件通过 current 属性传递当前的值。

Pagination 翻页器 - 图1

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. class Demo extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.state = {
  6. current: 2
  7. };
  8. this.handleChange = this.handleChange.bind(this);
  9. }
  10. handleChange(current) {
  11. this.setState({
  12. current
  13. });
  14. }
  15. render() {
  16. return (
  17. <Pagination current={this.state.current} onChange={this.handleChange} />
  18. );
  19. }
  20. }
  21. ReactDOM.render(<Demo />, mountNode);

分页按钮链接

可以通过指定 link 属性来设置页码按钮的跳转链接,方便SEO,link属性的值为一个包含{page}的模板字符串,Pagination组件会将该占位符替换为具体的页码数字。

Pagination 翻页器 - 图2

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. const format = window.location.href + "#/{page}";
  3. ReactDOM.render(<Pagination defaultCurrent={2} link={format} />, mountNode);

每页显示

可以通过设置 onPageSizeChange 属性来指定每页显示的数量变化时的回调函数。可以通过设置 pageSizePosition 属性来指定 每页显示数量选择 的部件显示在整个组件的开始位置还是结束位置。可以通过设置 pageSizeList 属性来指定 每页显示数量 可选的值。可以通过设置 pageSizeSelector 属性来指定是否显示 每页数量选择 的部件以及部件形状。可以通过设置 pageSize 属性来指定每页显示的数量。

Pagination 翻页器 - 图3

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. const handlePageSizeChange = size => console.log(size);
  3. ReactDOM.render(
  4. <div>
  5. <h3>无每页数量选择器</h3>
  6. <Pagination pageSizeSelector={false} />
  7. <h3>filter类型每页数量选择器</h3>
  8. <Pagination
  9. pageSizeSelector="filter"
  10. onPageSizeChange={handlePageSizeChange}
  11. />
  12. <h3>dropdown类型每页数量选择器,并且至于整个组件的尾部</h3>
  13. <Pagination
  14. pageSizeSelector="dropdown"
  15. pageSizePosition="end"
  16. onPageSizeChange={handlePageSizeChange}
  17. />
  18. </div>,
  19. mountNode
  20. );

配合react-router使用

单页应用场景下,Pagination组件可以使用外部跳转的方法来实现单页内部跳转。

Pagination 翻页器 - 图4

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. import { hashHistory } from "react-router";
  3. function handleChange(page) {
  4. hashHistory.push(page.toString());
  5. }
  6. ReactDOM.render(
  7. <Pagination defaultCurrent={2} onChange={handleChange} />,
  8. mountNode
  9. );

前进后退按钮只显示箭头

可以通过指定 shape 属性来设置前进后退按钮箭头的显示方式。

Pagination 翻页器 - 图5

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <h3>normal</h3>
  5. <Pagination defaultCurrent={2} />
  6. <h3>arrow-only</h3>
  7. <Pagination defaultCurrent={2} shape="arrow-only" />
  8. <h3>arrow-prev-only</h3>
  9. <Pagination defaultCurrent={2} shape="arrow-prev-only" />
  10. <h3>no-border</h3>
  11. <Pagination defaultCurrent={2} shape="no-border" type="simple" />
  12. </div>,
  13. mountNode
  14. );
  1. .next-pagination + .next-pagination {
  2. margin-top: 20px;
  3. }

显示总数

分页组件自身并未提供显示总数的功能,但是你可以像这个例子所展示的那样轻松实现该功能。

Pagination 翻页器 - 图6

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. const total = 50;
  3. ReactDOM.render(
  4. <div>
  5. <span>{`共 ${total} 项`}</span>
  6. <Pagination className="custom-pagination" total={total} />
  7. </div>,
  8. mountNode
  9. );
  1. .custom-pagination {
  2. display: inline-block;
  3. margin-left: 10px;
  4. }

分页尺寸

可以通过指定 size 属性来设置分页的尺寸。

Pagination 翻页器 - 图7

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <h3>small</h3>
  5. <Pagination defaultCurrent={2} size="small" />
  6. <h3>medium</h3>
  7. <Pagination defaultCurrent={2} size="medium" />
  8. <h3>large</h3>
  9. <Pagination defaultCurrent={2} size="large" />
  10. </div>,
  11. mountNode
  12. );

分页类型

可以通过指定 type 属性来设置分页的类型。

Pagination 翻页器 - 图8

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. ReactDOM.render(
  3. <div>
  4. <h3>normal</h3>
  5. <Pagination defaultCurrent={2} />
  6. <h3>simple</h3>
  7. <Pagination defaultCurrent={2} type="simple" />
  8. <h3>mini</h3>
  9. <Pagination defaultCurrent={2} type="mini" />
  10. </div>,
  11. mountNode
  12. );

非受控分页

非受控分页,是指分页组件的状态由自己维护,组件值的改变可以通过 onChange 事件通知父组件,默认值由 defaultCurrent 初始化。

Pagination 翻页器 - 图9

查看源码在线预览

  1. import { Pagination } from "@icedesign/base";
  2. const change = function(value) {
  3. console.log(value);
  4. };
  5. ReactDOM.render(<Pagination defaultCurrent={2} onChange={change} />, mountNode);

相关区块

Pagination 翻页器 - 图10

暂无相关区块