❓ Router
사용자가 요청한 URL에 따라 해당 URL에 맞는 페이지를 보여주는 것
간단한 라이브러리이니 바로 셋팅법과 사용법 등등에 대해서 알아보자
npm install react-router-dom@6
터미널에서 해당 명령을 통해 Router를 설치하자.
그리고 src파일 안에 있는 index.js 내부의 코드에
import { BrowserRouter } from 'react-router-dom'; // add
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter> // add
<App />
</BrowserRouter> // add
</React.StrictMode>
);
add라고 주석 처리한 세 곳에 저 코드 그대로 복붙 !
끝.
❗ Route 기본 사용법
Router 사용법은 간단하다.
일단 맨 위에
import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom'
해당 코드를 먼저 추가해주자.
이 번 포스팅에선 Routes, Route, Link, useNavigate, Outlet만 사용할 것이다.
👍 각 정의에 대해선 다음과 같다
✔ Routes는 여러 Route를 감싸서 규칙이 일치하는 라우트 하나만을 렌더링 시켜주는 역할을 한다.
✔ Route는 path속성에 경로, element속성에는 컴포넌트를 넣어 준다. 여러 라우팅을 매칭하고 싶은 경우 URL 뒤에 *을 사용하면 된다.
✔ Link는 링크에서 사용하는 경로가 현재 라우트의 경로와 일치하는 경우 특정 스타일 또는 CSS클래스를 적용하는 컴포넌트이다.
✔ useNavigate는 다양한 경로를 이동할때, 동작하는 함수를 만들기 위해서 사용한다.
✔ Outlet은 nasted routes 하게 될 때 상위 라우터에 하위 라우트를 동시에 표현할 수 있게 된다.
만약 Outlet을 쓰지않는다면 하위 라우트는 출력이 되지않는다.
다음으로 <Routes>안에 <Route>를 넣고 사용하면 된다
<Routes>
<Route path="원하는 경로" element = {""}> </Route>
</Routes>
<Routes>안에 <Route>를 넣고 사용하면 된다
path에는 해당 라우트의 경로를 지정하고 element는 경로로 이동했을 때 출력할 컴포넌트들을 정의해주면 된다.
❗ Nasted routes 란? (중첩 라우트)
Nasted routes는 말 그대로 Route를 중첩 시키는 것이다.Route로 불러온 컴포넌트 내부에 Router가 하나 더 존재하는 형태인 것이다. 다만, 상위 컴포넌트의 URL값을 공유하고, 상태값을 주소값이 일부 대처하는 정도의 특징을 보인다.
만약 쇼핑몰에서 상품들이 있고 상품들 중 1번 상품을 클릭했을 때 1번 상품에 해당하는 경로를 가진 홈페이지가 있다고 하자.
<Routes>
<Route path="/product" element={<div><AboutComponent/></div>}>
<Route path="product1" element={<div>about member</div>}> </Route>
</Route>
</Routes>
그럼 이렇게 <Routes>안에 <Route>를 넣고 가장 상위 <Route>안에 <Route>를 넣으면 된다
이렇게 된다면 product1의 접근 방법은 /product/product1으로 접근이 가능한것이다.
✔ Nasted routes는 최상위 컴포넌트에서 변동되는 컴포넌트가 거의 없을 때 사용한다고 한다.
❗ URL Parameter
Nasted routes과 함께 사용할 수 있는 기능을 하나 더 알아보고 가자.
만약 어떤 쇼핑몰에 상품(product)가 100개있는 물건이 있다.
그러면 어떻게 만들것인가 ?
<Routes>
<Route path="/product" element={<div><AboutComponent/></div>}>
<Route path="1" element={<div>about member</div>}> </Route>
<Route path="2" element={<div>about member</div>}> </Route>
<Route path="3" element={<div>about member</div>}> </Route>
<Route path="4" element={<div>about member</div>}> </Route>
....
</Route>
</Routes>
이렇게 100개를 만들수는 없을터.
그래서 여기서 쓸 수 있는게 바로 URL Parameter이다
URL Parameter는 사용자가 /product/1, /product/2, /product/3 이렇게 입력했을 때
Parameter 값으로 입력되는 1,2,3 같은 애들을 불러다가 쓰는거다
사용법은 간단하다
import { useParams } from "react-router-dom"
제일 위에 임포트 해주고
let {id} = useParams();
console.log(id) // product/152를 입력하면 152가 출력된다
해주면 끝이다.
❗ 404 페이지 만들기 (빈 페이지)
만약 Route 해준 경로 이외의 경로에 접속했을 때는 404처리를 해서 사용자가 옳지못한 경로의 페이지로 접근했다고 알려주어야한다.
해당 방법은 간단하다
<Route path="*" element={<div>빈 페이지</div>}></Route>
끝.
'자바스크립트 - React.js' 카테고리의 다른 글
[React.js] 성능개선 1 : lazy import (1) | 2022.11.29 |
---|---|
[React.js] useEffect에 대하여 (0) | 2022.11.27 |
[React.js] CSS-in-JS (Styled-components)에 대하여 (0) | 2022.11.10 |
[코딩애플/React.js] input 태그를 활용한 글 생성, 수정 예제 풀이 (1) | 2022.10.25 |
[React.js] props()에 대하여 (0) | 2022.10.17 |