UX·UI - FrontEnd Dev. Story

프론트엔드/React

[React] yarn으로 프로젝트에 Router (리액트라우터) 설치 및 사용

클로이겅쥬 2023. 1. 31. 17:05
반응형

 

 

 

 

 

 

 

Router란? 결국 페이지 이동을 의미한다.

 

React에서 <header> 메뉴의 URL같은 링크 버튼을 클릭했을 때, 그 링크 경로에 맞는 컴포넌트 페이지들을 보여주고싶다.

보통 레거시 스타일로 작업할 땐, 경로 클릭시 새로운 페이지가 로딩이 된다.

그것은 너무나도 데이터 자원낭비!

 

그럴때는 사용하는것이 Router (리액트 라우터)이다.

라우터를 사용하면 새로운 페이지 로드??

 

No No!!

 

업데이트 되는 새로운 페이지만 path와 element로 연결하여 컴포넌트를 불러오는 신박한 기능이다.

아래 예시들은 이해를 돕기위해 개인 홈페이지를 만들면서 필요한 내용을 Router로 만들어보았다. 

 

 

 

 

우선 내가 만들려는 페이지의.. 스케치(?)

------------------------------------------------------

index.jsx

 └ Header.jsx

 └ Home.jsx

  └ About.jsx

  └ Project.jsx

  └ Contact.jsx

------------------------------------------------------

 

 

 

 

 

 

 

1. [ Router 라이브러리 ] 추가


yarn add react-router-dom

 

* npm 설치방법

더보기
npm install react-router-dom

 

 

 

 

 

 

2. <BrowserRouter> 태그로 컴포넌트 사용하기


Router에는 종류가 두가지 있는데,

- <BrowserRouter> 는 HTML5를 지원하는 브라우저의 주소를 감지 한다.

- <HashRouter>는 해시 주소를 감지한다.

 

우리는 두 종류 중, <BrowserRouter> 태그를 선택해서 감싸본다.

 

 

 

위치) Home.jsx

 

 

 

 

 

 

 

3. <Routes> 태그로 컴포넌트 감싼 후, <Route> 연결


위치) Home.jsx

 

- <Routes>는 여러 <Route>를 감싸줄 태그이며 일치하는 <Route>를 찾아서 연결해주는 역할.

- <Route>는 path, element 속성이 있다.

 

 

 

 

 

 

 

4. 속성 path 경로와 연결된 컴포넌트 element 삽입


위치) Home.jsx

 

- path 속성에는 경로를 넣어준다.

- element 속성에는 경로와 연결할 컴포넌트(component)를 넣어준다.

 

단, element 속성에 컴포넌트 입력할 시,

{ 대괄호 } 내에 넣어주며 컴포넌트가 import 잘 되었는지 꼭 확인!

 

 

 

 

 

Route 완성)

필요한 route만큼 추가해서 path속성과 element 속성을 입력해서 넣어준다.

 

 

- path=" / "는 default 값이다.  / 는 첫번재로 로딩되었던 페이지로 간다는 경로.

- 사전에 정의하지 않은 경로에 접근을 했을 때, 404 Error 페이지로 넘어가는 방법?

: path 경로에 *을 사용하면된다.

 

 

 

 

 

 

여기까지 잘 따라왔다면 그대는 따봉!

 

레거시 스타일에서 링크를 걸때, <a>태그를 사용한다.

하지만 <a>태그는 새로운 페이지를 계속 불러오기때문에 React에서는 사용하지 않는다.

그럴때 쓰는것이 <Link>태그이다. 그럼 <Link>도 한번 적용해보자 Go Go!!

 

 

 

 

 

 

5. <Link> 컴포넌트 사용해서 <route> 경로랑 연결하기


클릭할 페이지로 넘어간다. 나같은 경우는 Header.jsx이다.

 

 

위치) Header.jsx

 

제일 처음 예시를 보여주기위해 <a>태그를 이용해 버튼을 만들어놨다.

<a>태그는 당장 없애버리고 <Link to=""></Link>를 삽입한다.

그리고 경로 이동을 위해, <a> 태그에 href="#"가 있다면 <Link> 태그에는 to="#"를 사용한다.

 

 

 

 

 

 

Link 완성)

 

위 이미지처럼 <Link to="#"> 태그의 # 대신 필요한 경로를 삽입하면 클릭을 해보자.

Router(리액트 라우터)를 통해 맞는 컴포넌트를 새로운 로딩없이 연결시켜 보여준다. 

 

 

 

 

 

 

 

6. Result 화면


 

header 메뉴 클릭시, 경로에 맞는 페이지 로딩

 

 

 

 

 

 

 

 

 

도움이 되셨다면 광고 한번 클릭해주세요

그럼 주인장이 기분이가 조크든용

 

 

 

 

 

 

 

 


Recommand Posting For you Guys

 


* React에서 <a>태그 사용할 때, 오류가..??

* Json은 옆집 제이슨 말하는건가

* Js 올림차순, 내림차순 하는방

* Git 머지/커밋/푸시 삭제방법

* 프로토콜, IP, 도메인네임.. 도대체 어떻게 다른거지?

 

 

반응형