페이지 이동 Hook
useNavigate, useParams, useSearchParams
useNavigate :
다른 페이지로 이동, 뒤로 가기 시 사용하는 hook.
import axios from "axios";
import React, { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
const InfoProductSoldOutPage = () => {
...
const navigate = useNavigate();
return (
<div>
...
<Paper style={{ marginBottom: 50 }}>
<Button
size="large"
variant="contained"
onClick={() => navigate("/listSoldOut")}
>
돌아가기
</Button>
</Paper>
</div>
);
};
export default InfoProductSoldOutPage;
useParams, useSearchParams :
쿼리 스트링을 받아 오는 Hook
useParams :
전달된 Path variable을 useParams custom hook을 통해 가져와 페이지 이동
import { useParams } from "react-router-dom";
const InfoProductSoldOutPage = () => {
const { goods_id } = useParams();
...
useEffect(() => {
axios
.all([axios.get(`/product/order/${goods_id}`)])
.then(
axios.spread((res1) => {
setDetailProduct(res1.data);
})
)
.catch((error) => {
console.log("error", error);
});
}, [goods_id]);
...
return (
<div>
<Box
sx={{
display: "flex",
"& > :not(style)": {
m: 1,
width: 1,
minWidth: 300,
minheight: 270,
},
}}
>
<Paper variant="outlined">
<div>상품 {goods_id} 페이지</div>
...
</Paper>
</Box>
...
</div>
);
};
useSearchParams :
쿼리 스트링(name과 value를 엮어서 데이터를 전송)을 통해 url을 변경시킨다.
import { Link, useSearchParams } from "react-router-dom";
// 페이지 번호 버튼 클릭 시 현재 페이지를 받아 url에 현재 페이지 표시
const [searchParams, setSearchParams] = useSearchParams();
const ListProductsSalePage = () => {
...
const handlePageChange = (currentPage) => {
setCurrentPage(currentPage);
console.log(currentPage);
axios
.get(`/product/on-sale`, {
params: {
page: currentPage - 1,
size: postPerPage,
},
})
.then((res) => {
setProducts(res.data);
setSearchParams({ page: currentPage });
console.log("current page : ", searchParams.get("page"));
})
.catch((error) => {
console.log("error", error);
});
};
return (
<div>
...
<Paging
page={currentPage}
postPerPage={postPerPage}
count={count}
setPage={handlePageChange}
/>
</div>
)
);
}
참고 :
https://velog.io/@haesoohaesoo/useParams-useLocation-useNavigate
'Javascript&Typescript > React' 카테고리의 다른 글
[React] 리액트 pagination 적용 (1) | 2022.09.29 |
---|---|
[React] Date picker 사용하기 ( + default 값으로 오늘 날짜) (0) | 2022.09.08 |
[React] 버튼 클릭 이벤트 새로운 페이지로 이동하기 (button click to new page) (0) | 2022.09.06 |
[React] material-ui Accordion에 map함수 적용하기 (0) | 2022.09.04 |
[React] npm start 시 react-scripts: command not found 오류 (0) | 2022.09.02 |
댓글