티스토리 뷰
[React] pagination Component 만들기
[ App.jsx ]
// state변수 설정
const [currPage, setCurrPage] = useState(0);
[ Pagination.jsx ] - 페이지리스트 배열 만들기.
const MAX_PAGE_COUNT = 10; // MAX_PAGE_COUNT -> 한번에 보여지는 페이지 수,
let resultList = [];
function getPaginationArray(currPage, pageCount) {
// 1, 11, 21 ... 페이지가 선택될 때 ,
// 1~10, 11~20, 21~30 ... 리스트 생성
if ((currPage + 1) % MAX_PAGE_COUNT === 1) {
let idx = 1;
resultList = [currPage];
while (resultList.length < MAX_PAGE_COUNT && currPage + idx < pageCount) {
resultList.push(currPage + idx);
idx++;
}
// 9, 19, 29 ... 페이지가 선택될 때,
// 1~10, 11~20, 21~30 ... 리스트 생성
} else if (currPage % MAX_PAGE_COUNT === MAX_PAGE_COUNT - 1) {
let idx = 1;
resultList = [currPage];
while (resultList.length < MAX_PAGE_COUNT) {
resultList.unshift(currPage - idx);
idx++;
}
}
return resultList;
}
[ Pagination.jsx ] - 컴포넌트 구성
// 이전페이지 버튼
<ArrowWrapper onClick={() => currPage > 0 && onClickPage(currPage - 1)} disabled={currPage <= 0}>
<Arrow />
</ArrowWrapper>;
// 페이지리스트를 받아서 map함수를 이용해 불러온다.
{
getPaginationArray(currPage, pageCount).map((page) => {
return (
<Button
onClick={() => onClickPage(page)}
key={`page-button-${page}`}
active={page === currPage}
>
{page + 1}
</Button>
);
});
}
// 다음페이지 버튼
<ArrowWrapper
flip
onClick={() => currPage < pageCount - 1 && onClickPage(currPage + 1)}
disabled={currPage >= pageCount - 1}
>
<Arrow />
</ArrowWrapper>;
[ 결과 ]
'개발일기 > REACT' 카테고리의 다른 글
[React] fakerjs, shortid를 이용해서 그럴싸한 DummyData 만들기. (0) | 2022.03.11 |
---|---|
[React] shortid를 사용해 랜덤한 key값 만들기 (0) | 2022.03.08 |
[React] Redux-saga , 리액트 무한스크롤 구현하기 코드예시. (0) | 2022.03.04 |
[React] createGlobalStyle 사용해서 기존CSS 덮어쓰기. (0) | 2022.03.01 |
[REACT] input[type="file"] 디자인 변경 하는 방법 (0) | 2022.02.27 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 게더타운
- nextjs
- 전기기사
- 실기CBT
- JavaScript
- 전기기사 필기
- gathertown
- 전력공학
- 전기산업기사
- zep
- 모두CBT
- TypeScript
- 전기기사실기CBT
- KEC반영
- 개더타운
- 산업안전기사 실기
- React
- dummydata
- 산업안전기사
- 전기공사기사
- cbt
- fakerjs
- 전자기학
- 산안기 합격률
- 게더타운맵
- 전기기기
- 전기기사필기
- TS
- shortid
- 전기기사실기단답
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함