What is react-paginate?
react-paginate is a React component that helps in creating pagination for your data. It provides a flexible and customizable way to paginate through large sets of data, making it easier to navigate and manage.
What are react-paginate's main functionalities?
Basic Pagination
This code demonstrates a basic usage of react-paginate. It sets up a pagination component with labels for previous and next buttons, a break label, and specifies the number of pages to display. The handlePageClick function logs the selected page number.
import ReactPaginate from 'react-paginate';
function PaginationComponent() {
const handlePageClick = (data) => {
console.log(data.selected);
};
return (
<ReactPaginate
previousLabel={'previous'}
nextLabel={'next'}
breakLabel={'...'}
breakClassName={'break-me'}
pageCount={10}
marginPagesDisplayed={2}
pageRangeDisplayed={5}
onPageChange={handlePageClick}
containerClassName={'pagination'}
subContainerClassName={'pages pagination'}
activeClassName={'active'}
/>
);
}
Custom Styling
This example shows how to apply custom styling to the pagination component by importing a CSS file and setting custom class names for the container, sub-container, and active page.
import ReactPaginate from 'react-paginate';
import './pagination.css';
function CustomStyledPagination() {
const handlePageClick = (data) => {
console.log(data.selected);
};
return (
<ReactPaginate
previousLabel={'previous'}
nextLabel={'next'}
breakLabel={'...'}
breakClassName={'break-me'}
pageCount={10}
marginPagesDisplayed={2}
pageRangeDisplayed={5}
onPageChange={handlePageClick}
containerClassName={'custom-pagination'}
subContainerClassName={'pages custom-pagination'}
activeClassName={'active'}
/>
);
}
Controlled Pagination
This example demonstrates a controlled pagination component where the current page state is managed using React's useState hook. The forcePage prop is used to control the current page programmatically.
import React, { useState } from 'react';
import ReactPaginate from 'react-paginate';
function ControlledPagination() {
const [currentPage, setCurrentPage] = useState(0);
const handlePageClick = (data) => {
setCurrentPage(data.selected);
};
return (
<div>
<ReactPaginate
previousLabel={'previous'}
nextLabel={'next'}
breakLabel={'...'}
breakClassName={'break-me'}
pageCount={10}
marginPagesDisplayed={2}
pageRangeDisplayed={5}
onPageChange={handlePageClick}
containerClassName={'pagination'}
subContainerClassName={'pages pagination'}
activeClassName={'active'}
forcePage={currentPage}
/>
<p>Current Page: {currentPage + 1}</p>
</div>
);
}
Other packages similar to react-paginate
rc-pagination
rc-pagination is a pagination component for React that provides a similar set of features to react-paginate. It is highly customizable and supports various pagination styles. Compared to react-paginate, rc-pagination offers more built-in styles and configurations but may require more setup for custom designs.
react-js-pagination
react-js-pagination is another React pagination component that offers a straightforward API for implementing pagination. It is simpler than react-paginate and may be easier to use for basic pagination needs. However, it might lack some of the advanced customization options available in react-paginate.
material-ui-pagination
material-ui-pagination is a pagination component designed to work seamlessly with Material-UI. It provides a Material Design look and feel, making it a good choice for projects already using Material-UI. Compared to react-paginate, it offers a more integrated experience with Material-UI but may not be as flexible for non-Material-UI projects.
react-paginate
A ReactJS component to render a pagination.
By installing this component and writing only a little bit of CSS you can obtain this:
or
Installation
Install react-paginate
with npm:
$ npm install react-paginate --save
For CommonJS users:
import ReactPaginate from 'react-paginate';
Read the code of demo/js/demo.js. You will quickly understand
how to make react-paginate
work with a list of objects.
Demo
Clone the repository and move into:
$ git clone git@github.com:AdeleD/react-paginate.git
$ cd react-paginate
Install dependencies:
$ make install
Prepare the demo:
$ make demo
Run the server:
$ make serve
Open your browser and go to http://localhost:3000/
Props
Name | Type | Description |
---|
pageCount | Number | Required. The total number of pages. |
pageRangeDisplayed | Number | Required. The range of pages displayed. |
marginPagesDisplayed | Number | Required. The number of pages to display for margins. |
previousLabel | Node | Label for the previous button. |
nextLabel | Node | Label for the next button. |
breakLabel | Node | Label for ellipsis. |
breakClassName | String | The classname on tag li of the ellipsis element. |
onPageChange | Function | The method to call when a page is clicked. Exposes the current page object as an argument. |
initialPage | Number | The initial page selected. |
forcePage | Number | To override selected page with parent prop. |
disableInitialCallback | boolean | Disable onPageChange callback with initial page. Default: false |
containerClassName | String | The classname of the pagination container. |
pageClassName | String | The classname on tag li of each page element. |
pageLinkClassName | String | The classname on tag a of each page element. |
activeClassName | String | The classname for the active page. |
previousClassName | String | The classname on tag li of the previous button. |
nextClassName | String | The classname on tag li of the next button. |
previousLinkClassName | String | The classname on tag a of the previous button. |
nextLinkClassName | String | The classname on tag a of the next button. |
disabledClassName | String | The classname for disabled previous and next buttons. |
hrefBuilder | Function | The method is called to generate the href attribute value on tag a of each page element. |
extraAriaContext | String | Extra context to add to the aria-label HTML attribute. |
Contribute
- Submit an issue
- Fork the repository
- Create a dedicated branch (never ever work in
master
) - The first time, run command:
webpack
into the directory - Run
npm start
- Fix bugs or implement features
- Always write tests
Run tests:
$ make test