So I’m having a little trouble on loading more items from the array. I already made it display the first four items, but when I click the Pagination items it doesn’t show me the next items. I’m using the Pagination component from React Bootstrap, since it’s the main framework of my project.
const [pagination, setPagination] = useState({
data: names,
offset: 0,
numberPerPage: 4,
pageCount: 0,
currentData: [],
activePage: 1
});
useEffect(() => {
setPagination((prevState) => ({
...prevState,
pageCount: prevState.data.length / prevState.numberPerPage,
currentData: prevState.data.slice(
pagination.offset,
pagination.offset + pagination.numberPerPage
)
}));
}, [pagination.numberPerPage, pagination.offset]);
const handlePageClick = (event) => {
const selected = event.selected;
const offset = selected * pagination.numberPerPage;
const activePage = selected + 1;
setPagination({ ...pagination, offset, activePage });
};
// Pagination items
const paginationItems = [];
const amountPages = pagination.data.length / pagination.numberPerPage;
for (let number = 1; number <= amountPages; number++) {
paginationItems.push(
<Pagination.Item
onClick={handlePageClick}
key={number}
active={number === pagination.activePage}
>
{number}
</Pagination.Item>
);
}
return (
<div className="list">
<Container>
{pagination.currentData &&
pagination.currentData.map((item, index) => (
<div key={index} className="post">
<h3>{item.name}</h3>
</div>
))}
<Pagination>{paginationItems}</Pagination>
</Container>
</div>
);
Here is the codesandbox that I'm using for example: https://codesandbox.io/s/react-bootstrap-pagination-mp9l8?file=/src/App.js