컴퍼넌트 지정된대로 이동하는 것을 정적 라우팅이라 한다.
<App />
<Users />
<Products />
경로를 지정해주지 않았는데도 다른 경로를 가져와서 화면에 뿌릴 수 있게 해주는 것이 적 라우팅이다.
: 상세 페이지처럼 하나로 들어갈 때 사용!!
www.wanted.co.kr/wd/52179 // 앤드포인트 뒤에 52179가 path parameter이다.
: 필터링, 검색할 때 사용!!
"/search?keykeyword=위코드" <Search keyword=위코드" />
"/search?keykeyword=위코드&&keykeyword=위코드" 이렇게 여러 개 쓸 수있음
앤드포인트 뒤에 / 대신 ?로 시작하고 keyword=value
function Product(props) {
const navigate = useNavigate();
const goToDetail = () => {
navigate(`/product/${props.id}`);
}
return (
<div className="productContainer" onClick={goToDetail}>
...
</div>
)
}
인자에 정수값을 넣어주면 브라우저 방문 기록에 남아있는 경로들을 앞 뒤로 탐색할 수도 있다
navigate(-1); // 뒤로 가기
navigate(-2); // 뒤로 2페이지 가기
navigate(1); // 앞으로 가기
function ProductDetail(props) {
const location = useLocation();
console.log(location);
return (
...
)
}
// 현재경로: /product/1
function ProductDetail(props) {
const params = useParams();
console.log(params);
return (
...
)
}
console 출력값
{
id: 1
}
여기서 id 라는 프로퍼티 키 네임은 Router 에서 :id 로 표기해준 값이다.
<BrowserRouter>
<Routes>
<Route path='/product/:id' element={<ProductDetail />} />
</Routes>
</BrowserRouter>
useNavigate
url을 변경하는 함수
를 반환하고,
useLocation
현재 경로 정보를 담고 있는 객체
를 반환하고,
useParams
Router 에 등록해준 path parameter 정보를 담고 있는 객체
를 반환한다.