SPA(Single Page Application): 서버로부터 완전한 새로운 페이지를 불러오지 않는 대신, 페이지 갱신에 필요한 데이터만을 받아 그 정보를 기준으로 현재 페이지를 업데이트하는 웹 어플리케이션이나 웹 사이트
Promblem
네트워크에서 경로를 선택하는 프로세스 → 주소에 따라 다른 화면을 보여주는 과정
라우팅을 위한 React 라이브러리
<BrowserRouter>
: 웹 애플리케이션에서 HTML5의 History API를 사용해 페이지를 새로고침하지 않고도 주소를 변경할 수 있게 해줌<BrowserRouter>
는 반드시 상위에 작성되어 있어야 함<BrowserRouter>
를 넣어서 활용할 수도 있음import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
<Routes>
: 여러 <Route>
컴포넌트를 자식요소로 삼고, 그 중 경로가 일치하는 단 하나의 라우터만 렌더링을 시켜줌<Routes>
를 사용하지 않으면 매칭되는 모든 요소를 렌더링함Routes
컴포넌트로 Route
컴포넌트들을 감싸기<Route>
path
속성을 지정하여 해당 path
에서 어떤 컴포넌트를 보여줄지 정함<Link>
컴포넌트가 정해주는 URL 경로와 일치하는 경우에만 작동path=”*”
:지정되지 않은 주소로 접근할 시에는 이 속성이 설정되어 있는 컴포넌트를 보여줌<Link>
: 경로를 연결해 주는 역할을 하는 컴포넌트<Link>
컴포넌트가 <a>
요소로 바뀜<Link>
의 to
속성을 활용해 <Route>
컴포넌트에 설정해 준 path
주소를 연결함참고사항
React Router에서<a>
가 아닌<Link>
를 사용하는 이유
<a>
요소는 페이지를 전환하는 과정에서 페이지를 불러오기 때문에 다시 처음부터 렌더링을 시킴(새로고침)<Link>
컴포넌트는 페이지 전환을 방지하는 기능이 내장되어 있어 SPA를 구현함
//React Router 라이브러리가 제공하는 컴포넌트들을 사용하기 위한 세팅
import {BrowserRouter, Routes, Route, Link} from "react-router-dom";
function App() {
return (
<BrowserRouter>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>{/* Link 컴포넌트를 이용하여 경로를 연결*/}
</li>
<li>
<Link to="/mypage">MyPage</Link>
</li>
<li>
<Link to="/dashboard">Dashboard</Link>
</li>
</ul>
</nav>
<Routes>
<Route path="/" element={<Home />} /> {/* 경로는 path로 컴포넌트는 element로 연결해 줍니다. */}
<Route path="/mypage" element={<MyPage />} />
<Route path="/dashboard" element={<Dashboard />} />
</Routes>
</div>
</BrowserRouter>
);
}
function Home() {
return <h1>Home</h1>;
}
function MyPage() {
return <h1>MyPage</h1>;
}
function Dashboard() {
return <h1>Dashboard</h1>;
}
export default App;