kcscDev/egovframe-template-simple-r.../src/components/EgovPaging.jsx

62 lines
2.2 KiB
JavaScript

import React from 'react';
function EgovPaging({pagination, moveToPage}) {
console.groupCollapsed("EgovPaging");
console.log("EgovPaging [pagination] : ", pagination);
let paginationTag = [];
if (pagination === undefined) {
paginationTag = "-";
} else {
if(pagination.startNum>1){
// 첫 페이지 이동
paginationTag.push(<li key="fp" className="btn">
<button onClick={e => {moveToPage(1)}} className="first">처음</button>
</li>);
// 이전 페이지 이동
const prevPageIndex = pagination.pageIndex-10 < 0?1:(pagination.pageIndex-10)
paginationTag.push(<li key="pp" className="btn">
<button onClick={e => {moveToPage(prevPageIndex)}} className="prev">이전</button>
</li>);
}
for (let i = pagination.startNum; i <= pagination.endNum; i++) {
if (i === pagination.pageIndex) {
// 현재 페이지
paginationTag.push(<li key={i}>
<button className="cur">{i}</button>
</li>);
} else {
// 다른 페이지
paginationTag.push(<li key={i}>
<button onClick={e => {moveToPage(i)}}>{i}</button>
</li>);
}
}
if(pagination.endNum!=pagination.maxNum){
// 다음 페이지 이동
const nextPageIndex = pagination.pageIndex+10 > pagination.maxNum?pagination.maxNum:(pagination.pageIndex+10)
paginationTag.push(<li key="np" className="btn">
<button onClick={e => {moveToPage(nextPageIndex)}} className="next">다음</button>
</li>);
// 마지막 페이지 이동
paginationTag.push(<li key="lp" className="btn">
<button onClick={e => {moveToPage(pagination.maxNum)}} className="last"></button>
</li>);
}
}
console.log("paginationTag", paginationTag);
console.groupEnd("EgovPaging");
return (
<div className="paging">
<ul>
{paginationTag}
</ul>
</div>
);
}
export default React.memo(EgovPaging);