๐ React Router
๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ํ๊ธฐ ์ ์ SPA๋ฅผ ์์๋ณผ ํ์๊ฐ ์๋ค.
์ฐ์ SPA๋ Single Page Application์ ์ฝ์์ด๋ค. ํ์ด์ง๊ฐ 1๊ฐ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ์ด์ผ๊ธฐ๋ค.
์ ์์ฆ SPA๊ฐ ์ฃผ๋ชฉ์ ๋ฐ๋๋๋ ๋ด๊ฐ ์์ฑํ ๊ฒ์๋ฌผ React๋ ๋ฌด์์ธ๊ฐ?๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ React์๋ ๊ณต์ Router ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ react-router๋ผ๋ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ผ์ฐํฐ ๊ธฐ๋ฅ์ ๊ตฌํํ ๊ฒ ์ด๋ค.๐ค๐ป ํ๋ก์ ํธ๋ฅผ ์ค๋นํด๋ณด์.
ํฐ๋ฏธ๋ ๋ช ๋ น์ผ๋ก ํ๋ก์ ํธ ์์ฑ
npx create-react-app router-exercise
ํ๋ก์ ํธ๋ฅผ ๋ง๋ ํ์ผ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด react-router-dom ์ค์น
cd router-exercise // npm ์ผ๋ก ์ค์นํ๊ธฐ npm install react-router-dom@6 // yarn ์ผ๋ก ์ค์นํ๊ธฐ yarn add react-router-dom@6
โ๐ป ํ๋ก์ ํธ์ ๋ผ์ฐํฐ ์ ์ฉ
src/index.js
import React from "react"; import ReactDOM from "react-dom"; import App from "./App"; import { BrowserRouter } from "react-router-dom"; ReactDOM.render( <BrowserRouter> <App /> </BrowserRouter>, document.getElementById("root") );
src/App.js
import React from "react"; import { Routes, Route, Link } from "react-router-dom"; export default function App () { return ( <div className="App"> <h1>Welcome to React Router!</h1> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> </Routes> </div> ); } -------- function Home () { return ( <> <main> <h2>Welcome to the homepage!</h2> <p>You can do this, I believe in you.</p> </main> <nav> <Link to="/about">About</Link> </nav> </> ); } -------- function About () { return ( <> <main> <h2>Who are we?</h2> <p>That feels like an existential question, don't you think?</p> </main> <nav> <Link to="/">Home</Link> </nav> </> ); }