React Router는 리액트에서 네이게이션을 관리하는 라이브러리 입니다.
다양한 경로를 정의하고 그 경로에 따라 컴포넌트를 렌더링할 수 있게 해줍니다.
설치 방법
npm 사용 | npm i react-router-dom |
yarn 사용 | yarn add react-router-dom |
React Router의 기본 개념
- BrowserRouter : 애플리케이션 전체를 감싸는 컴포넌트로 HTML5의 History API를 사용하여 URL을 관리합니다. 이 컴포넌트 안에서 라우팅이 이루어집니다.
- Routes : 여러 개의 Route를 감싸는 컴포넌트 입니다. 각 Route를 그룹화 하고 관리합니다.
- Route : 각 URL 경로에 해당하는 컴포넌트를 매핑할 때 사용합니다. 특정 경로에 들어가면 지정된 컴포넌트가 렌더링 됩니다.
- Link : <a> 태그를 대체하여 SPA에서 페이지를 새로 고침하지 않고도 다른 경로로 이동할 수 있게 해줍니다.
- Outlet : 중첩된 라우트를 처리할 때 사용됩니다. 부모 경로의 공통 레이아웃을 렌더링하고, 자식 경로에 해당하는 컴포넌트를 동적으로 출력할 수 있습니다.
React Router 예시 :
Route index element={<Main/>} 부분은 / 경로의 기본 자식 컴포넌트로 Main을 지정합니다.
index 속성은 부모 경로에서 기본적으로 렌더링되는 컴포넌트를 지정할 때 사용됩니다.
프로그램적 네비게이션
React Router에서 네비게이션을 함수 호출로 제어할 수 있는 기능입니다.
useNavigete() 훅을 사용하여 버튼 클릭이나 특정 이벤트 시 페이지 이동을 처리할 수 있습니다.
프로그램적으로 페이지를 전환합니다. 특정 이벤트에 따라 경로를 이동하고 싶을 때 유용합니다.
Link 와 useNavigate의 차이
Link 특징:
- 페이지 새로고침 없이 경로 변경 : 기존의 HTML <a> 태그처럼 페이지를 새로고침 하지 않고도 경로를 변경합니다.
- 사용자 상호작용 기반 : 사용자가 클릭하면 해당 경로로 이동합니다.
useNavigate 특징:
- 프로그래밍적인 경로 변경 : 특정 조건이 충족되면 자동으로 경로를 변경할 수 있습니다.
- 이벤트 기반 : 사용자가 특정 버튼을 클릭하거나 조건을 만족할 때, 혹은 특정 로직에 의해 경로를 이동시킬 수 있습니다.
Link : 사용자가 직접 클릭하여 경로를 이동하는 데 사용됩니다. 주로 네비게이션 메뉴나 링크를 표시할 때 활용됩니다.
useNavigate : 코드 내에서 명령으로 경로를 변경할 때 사용됩니다. 주로 이벤트나 로직의 결과에 따라 자동으로 경로를 변경할 때 유용합니다.
404 페이지 처리 (Not Found Routes)
잘못된 URL로 접근했을 때 사용자에게 404 페이지를 보여줄 수 있도록 설정하는 방법 입니다.
모든 경로와 일치하지 않을 때 * 를 사용하여 처리할 수 있습니다.
* 는 모든 경로와 일치하지 않는 경우를 처리하는 역할을 합니다.
동적 라우팅 의 기본개념
URL의 일부를 변수처럼 사용해서 그 값에 따라 다른 내용을 보여주는 방식 예로 쇼핑몰에서 상품 상세 페이지를 생각하면 상품마다 고유한 ID가 있는데 그걸 URL에 받아와서 상품마다 다른 정보를 보여주는 방법
/products/1 = 1번 상품의 정보
/porudcts/2 = 2번 상품의 정보
이때 :id 라는 걸 설정해서 URL에서 그 값을 받아와서 사용함
useParams는 URL에 있는 :id 부분을 가져옵니다.
/products/1 로 들어가면 id는 1이 되고 /products/2 로 들어가면 id는 2가 됩니다.
그러면 그 값에 맞는 데이터를 화면에 보여줄 수 있습니다.
'Front-end > React' 카테고리의 다른 글
React의 CSS 관리방법 : styled-components (4) | 2024.10.03 |
---|---|
리액트 훅 useContext / Recoil (2) | 2024.10.03 |
React 와 Node 연결 (4) | 2024.10.01 |
React 상태 관리 : 함수형 업데이트 vs 직접 참조 (안전한 상태 업데이트 방법) (1) | 2024.09.29 |
리액트 훅 useRef (0) | 2024.09.29 |