-
React-router-domReact (js, css) 2022. 6. 3. 08:28
오늘은 react-router-dom의 대표적인 문법인 browserRouter, Route, Link에 대해 설명해보겠다.
우선 react-router-dom이란? 리액트에서 Spa 구현할 때 가장 많이 쓰는 라우터이다.
*spa(single page application) - 전체 화면 로드 x (로딩 시간 지연) 일부만 변경 o
그리고 여기서 가장 헷갈리는 개념이 라우터였는데 지민이가 설명해줬다.
github.com 페이지 위는 github.com의 페이지이다. 여기서 옆의 yunaeun/yunaeun의 버튼을 누르면
github.com/yunaeun/yunaeun 페이지 주소가 바뀌며 이동하게 된다. 아아주 옛날옛적엔 페이지를 통채로 옮기는 방식을 사용했고, 그 후엔 백엔드를 통해 페이지를 넘겨줬다고 한다. 그리고 현재, 라우터가 손쉽게 다른 페이지를 볼 수 있게 해준다.
-> (한줄요약) 라우팅 : 사용자가 요청한 URL에 따라 알맞는 페이지를 보여주는 것을 의미한다.
프로젝트를 생성 후
$ npm install react-router-dom <- 해당 명령어를 입력해주면 라우터가 설치된다
import React from "react"; import { BrowserRouter, Routes, Route, Link } from "react-router-dom"; function App() { return ( <div className="react-router-dom"> <h1>react-router-dom</h1> </div> ); } export default App;
이런식으로 import 해주면 사용할 수 있다.
1. <BrowserRouter>
BrowserRouter는 HTML5의 History API(pushState, replaceState, popstate event)를 사용하여 URL과 UI를 동기해주는 <Router>라고 되어있다.
그치만... 무슨 말인지 모르겠다. 조금 더 쉽게 이해해보자면 새로고침을 하지않고도 주소를 변경할 수 있도록 도와주는 라우터인 것 같다. 또한, BrowserRouter는 최상위 컴포넌트를 감싸주는 래퍼 컴포넌트이다. <- 이 부분을 몰라서 코드 이해가 안 되었음!!
↔️ HashRouter 정적인 페이지에 적합하다고 함 URL에 #이 추가된다.
· 프로모션서버에 따라 무엇을 쓸지 결정
· 보편적으로는 BrowserRouter가 많이 쓰인다
2. <Route>
route는 사용자의 주소규칙에 따라 우리가 보여줄 컴포넌트를 지정할 수 있다. <Route />는 <Routes> </Routes>로 묶어줄 수 있다.
<Route path="주소규칙" element={보여 줄 컴포넌트 JSX} />
3. <Link>
Link는 a태그와 마찬가지로 클릭하면 다른 페이지로 넘겨주는 역할을 한다. 여기서 a태그와의 차이점은 a태그는 브라우저에서 새 페이지를 불러주는 반면, Link는 History API를 통해 브라우저 주소의 경로만 바꿔준다. (페이지를 새로 불러오는 걸 막음)
<Link to="경로">링크 이름</Link>
·
·
·
·
·
다음은 react-router-dom을 사용하여 구현한 코드이다.
import React from "react"; import { BrowserRouter, Routes, Route, Link } from "react-router-dom"; import Start from "./start.js"; import About from "./about.js"; import Contact from "./contact.js"; function App() { return ( <div className="react-router-dom"> <BrowserRouter> <nav> <Link to="/">Home</Link> <Link to="about">About</Link> <Link to="Contact">Contact</Link> </nav> <Routes> <Route path="/" element={<Start />} /> <Route path="about" element={<About />} /> <Route path="contact" element={<Contact />} /> </Routes> </BrowserRouter> </div> ); } export default App;
다음과 같이 최상단에는 BrowserRouter로 감싸주고 있고, Route를 통해 각각의 컴포넌트를 주소와 매칭해준다. 그리고 Link에서 이동할 주소를 입력하면 버튼 클릭시 해당 주소로 이동하게 된다.
localhost:8080 실행화면 🔼각 Home, About, Contact를 클릭하면 해당 컴포넌트가 보여진다.
'React (js, css)' 카테고리의 다른 글
과제 (1) (0) 2022.06.25 git으로 pages 배포해보기!! (0) 2022.06.25 useState (0) 2022.06.24 Arrow function (0) 2022.06.16