rc-pagination은 리액트에서 페이지네이션을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다.
yarn add rc-pagination
import Pagination from "rc-pagination";
import 'rc-pagination/assets/index.css';
rc-pagination을 사용하여 페이지네이션 컴포넌트를 만들기 위해 필요한 기본 속성은 current, total, pageSize입니다.
<Pagination
current={currentPage}
total={totalCount}
pageSize={pageSize}
onChange={(page) => setCurrentPage(page)}
/>
페이지네이션 상태 관리
리액트 훅을 사용하여 currentPage, totalCount, pageSize 상태를 관리합니다. 초기값은 각각 1, 총 데이터 수, 페이지 당 데이터 수로 설정합니다.
const [currentPage, setCurrentPage] = useState(1);
const [totalCount, setTotalCount] = useState(7);
const [pageSize, setPageSize] = useState(3);
useEffect 훅을 사용하여 currentPage가 변경될 때마다 새로운 데이터를 서버로부터 가져옵니다. 가져온 데이터를 통해 UI를 업데이트하고, totalCount를 설정하여 전체 페이지 수를 조정할 수 있습니다.
useEffect(() => {
let startIndex = (currentPage - 1) * pageSize + 1;
let endIndex = currentPage * pageSize;
axios({
method: 'get',
url:`http://localhost:8000/carts/${userInfo.id}/${startIndex}/${endIndex}`
})
.then(res => {
setCartList(res.data); // 데이터 업데이트
setTotalCount(res.data[0].cnt); // 전체 데이터 수 업데이트
})
.catch((err) => console.log(err));
}, [currentPage]);