개발자 도전기
[React] useSearchParams 사용해서 Paging 구현하기 본문
1. 페이지 번호를 넣을 배열을 생성합니다
let pageNumbers = [];
for (let i = 1; i < 10; i++) {
pageNumbers.push(i);
}
2. 배열에 담긴 값을 버튼에 매핑합니다. 컴포넌트는 Chakra ui를 사용했습니다.
onClick 이벤트에 있는 handlePage(pageNumber)로 버튼의 페이지 값을 전달합니다
<Center>
<Box>
{pageNumbers.map((pageNumber) => (
<Button key={pageNumber} onClick={() => handlePage(pageNumber)}>
{pageNumber}
</Button>
))}
</Box>
</Center>
3. onClick 이벤트로 받아온 pageNumber를 searchParams에 추가합니다.
이후, 쿼리스트링이 포함된 경로로 이동합니다
function handlePage(pageNumber) {
searchParams.set("page", pageNumber);
navigate(`/?page=${pageNumber}`);
}
4. 받아온 쿼리스트링을 searchParams를 이용해 axios.get()요청을 보냅니다.
페이지로 구분된 데이터를 boardList에 저장합니다.
useEffect의 deps에 searchParams을 넣어주어 페이지가 전환되면 요청이 발생합니다.
useEffect(() => {
axios.get(`/api/board/list?${searchParams}`).then((res) => {
setBoardList(res.data);
});
}, [searchParams]);
결과
'개발공부 > React' 카테고리의 다른 글
[React] State 끌어올리기 (Lifting State Up) (0) | 2024.05.30 |
---|---|
[React + Spring] axios.postForm()으로 폼 데이터 전송하기 (0) | 2024.05.28 |
[React] useParams과 useSearchParams, 동적 경로 (0) | 2024.05.22 |
[React] AXIOS를 사용해서 Get, Post 요청(feat. JSON) (0) | 2024.05.16 |
[React] Javascript 구조 분해 할당 (0) | 2024.05.10 |