-
[React] react-router-dom의 사용구버전/React 2023. 10. 4. 21:45
1. 중첩 라우팅
Outlet & 직접표기 비교
> Router.js <Routes> <Route path="web/*" element={<Web />}> <Route path=":id" element={<WebPost />} /> </Route> </Routes> > Web.js const Web = () => { return ( <div> <h1>This is Web</h1> <ul> <li> <Link to="1">Post #1</Link> </li> </ul> // 여기서 Outlet을 통해서 불러오는 곳 <Outlet /> </div> ); };
> Router.js <Routes> <Route path="web/*" element={<Web />} /> </Routes> > Web.js const Web = () => { return ( <div> <h1>This is Web</h1> <ul> <li> <Link to="1">Post #1</Link> </li> </ul> // 비교부분 <Routes> <Route path=":id" element={<WebPost />} /> </Routes> </div> ); };
결론 : 중첩라우팅을 통해서 Router.js 부분에 Route를 한눈에 볼 수 있게 되었음
2. useLocation && useParams && useNavigate
1) useLocation Hook
경로정보를 담고있는 객체를 return한다.
{ pathname: '/product/1', search: '', hash: '', state: null, key: 'default' }
2) useParams Hook
path parameter 정보를 담고있는 객체를 return한다.
<BrowserRouter> <Routes> <Route path='/product/:id' element={<ProductDetail />} /> </Routes> </BrowserRouter>
사전에 Route설정부분에서 동적으로 표기를 해주어야 한다.
// 현재 경로: /product/1 function ProductDetail(props) { const params = useParams(); console.log(params); return ( ... ) } // 콘솔 결과. { id: 1, }
3) useNavigate Hook
함수를 return 하는데 페이지를 이동시키는 함수를 반환한다.
// navigate 라는 변수에 useNavigate 라는 함수를 할당하였음. const navigate = useNavigate(); const queryString = filterQuery.concat(sortQuery); // navigate 함수의 인자에 이동하고자 하는 url을 전달하면 해당 url로 화면을 이동시킨다. navigate(`?${queryString}`);
인자에 정수값을 넣으므로써 방문기록에 남아있는 경로들을 앞 뒤로 탐색할 수 있다.
navigate(-1); // 뒤로가기 navigate(-2); // 뒤로 2페이지 가기 navigate(1); // 앞으로 가기
'구버전 > React' 카테고리의 다른 글
[SWR] Data의 reavalidate, mutate 활용 (0) 2023.11.03 [전역상태관리] Recoil (1) 2023.11.02 [Vite] ESlint 와 Prettier, Package.json 초기설정 (0) 2023.10.02 [제로초 Slack 클론 코딩] 백엔드 준비 + 초기설정 (Day-1) (0) 2023.09.29 [은버지 Study] React-query에 대하여 (0) 2023.07.31