1. 문제상황
vite + react 기반의 프로젝트에서 실행 시 첫번째 페이지를 /products 로 리다이렉트 하고싶었다.
App 컴포넌트는 뼈대인 Header 컴포넌트를 가지고 있고, Outlet을 이용해 나머지 페이지들을 렌더링한다.
처음에는 react router dom에서 제공하는 useNavigate 훅을 이용해서 구현했으나 useEffect가 거슬린다.
코드 자체가 명령적이고 App 내부에 숨겨져 있어 기능을 추적하기 까다롭다.
2. 해결방법
react router dom에서 제공하는 Navigate 컴포넌트가 있다.
A <Navigate> element changes the current location when it is rendered. It's a component wrapper around
useNavigate, and accepts all the same arguments as props.
렌더링 할때 현재 위치를 이동시키고, useNavigate 래퍼 컴포넌트이다.
Router 컴포넌트에서 App 컴포넌트에 나란하게 Navigate를 선언하여 코드를 선언적으로 작성할 수 있는 장점이 있다.
참고로 "replace" prop의 의미는 다음과 같다.
3. 추가 정보
https://gist.github.com/mjackson/b5748add2795ce7448a366ae8f8ae3bb
react router dom v6 에서의 전반적인 redirect 방법에 관한 gist글이 있어서 첨부한다.
'프론트엔드' 카테고리의 다른 글
css 속성들을 이해하면서 Skeleton 만들기 (0) | 2024.01.26 |
---|---|
vite + typescript + react 프로젝트에서 절대경로 설정하기 (4) | 2024.01.03 |
react-router-dom에서 404페이지 보여주기 (0) | 2023.12.30 |
toss/slash의 useOverlay 분석 (1) | 2023.12.19 |
StorageEvent와 CustomEvent로 useLocalStorage 훅 만들기 (1) | 2023.11.29 |