Skip to content

Instantly share code, notes, and snippets.

@codebucks27
Last active January 5, 2021 10:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codebucks27/9f7e3c06d5cb2a68a700c777f674cff6 to your computer and use it in GitHub Desktop.
Save codebucks27/9f7e3c06d5cb2a68a700c777f674cff6 to your computer and use it in GitHub Desktop.
import React, { useEffect, useState } from "react";
import "./style.css";
const renderData = (data) => {
return (
<ul>
{data.map((todo, index) => {
return <li key={index}>{todo.title}</li>;
})}
</ul>
);
};
function PaginationComponent() {
const [data, setData] = useState([]);
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/todos")
.then((response) => response.json())
.then((json) => setData(json));
}, []);
const handleClick = (event) => {
setcurrentPage(Number(event.target.id));
};
const renderPageNumbers = pages.map((number) => {
return (
<li
key={number}
id={number}
onClick={handleClick}
className={currentPage == number ? "active" : null}
>
{number}
</li>
);
});
const handleNextbtn = () => {
setcurrentPage(currentPage + 1);
if (currentPage + 1 > maxPageNumberLimit) {
setmaxPageNumberLimit(maxPageNumberLimit + pageNumberLimit);
setminPageNumberLimit(minPageNumberLimit + pageNumberLimit);
}
};
const handlePrevbtn = () => {
setcurrentPage(currentPage - 1);
if ((currentPage - 1) % pageNumberLimit == 0) {
setmaxPageNumberLimit(maxPageNumberLimit - pageNumberLimit);
setminPageNumberLimit(minPageNumberLimit - pageNumberLimit);
}
};
return (
<>
<h1>Todo List</h1> <br />
{renderData(data)}
<ul className="pageNumbers">
<li>
<button
onClick={handlePrevbtn}
disabled={currentPage == pages[0] ? true : false}
>
Prev
</button>
</li>
{renderPageNumbers}
<li>
<button
onClick={handleNextbtn}
disabled={currentPage == pages[pages.length - 1] ? true : false}
>
Next
</button>
</li>
</ul>
</>
);
}
export default PaginationComponent;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment