
npm install react-router-dom 5.2.0์ ์ด์ฉํ์ฌ router ์ค์น- App.js์์
import {BrowserRouter, Route, Switch} from 'react-router-dom';- App.js์์ return์ดํ ์ ์ฒด๋ฅผ
<BrowserRouter>๋ก ๊ฐ์ธ๊ธฐ- App.js์์ url์ ์ํด ๊ฐ๊ฐ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ณด์ด๋ ๋ถ๋ถ๋ง
<Switch>๋ก ๊ฐ์ธ์ฃผ๊ธฐ
<Switch>์ธ๋ถ๋ ๋ชจ๋ ํ์ด์ง ๊ณตํต์ผ๋ก ๋ ธ์ถ<Router path='/'> ๋ฉ์ธํ์ด์ง ์ฝ๋</Router><Router path='/url'> ๋ฐ๋๋ ํ์ด์ง ์ฝ๋</Router>
<Switch>๋ก<Router>๋ค์ ๊ฐ์ธ๋ฉด ์ผ์นํ๋ ์ฒซ๋ฒ์งธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค.
์ฆ, /url์๋ /๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธํ์ด์ง ์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ!
๋ฐ๋ผ์ ์ด๋ฐ ๊ฒฝ์ฐ์๋<Router exact path='/'>: ์ ํํ๊ฒ /์ผ๋๋ง ๋ณด์ฌ์ค
<html>์ <a> ์ฌ์ฉ๊ทธ๋ฌ๋<Router>๋ <Link to="/url">์ฌ์ฉ- url๋ก ํ์ด์ง ๋ ๋๋ง์ ํ๊ณ ์ถ์ ๋ถ๋ถ์
<Link to="/url"></Link>๋ก ๋ฌถ์- ํด๋น ํ์ผ ์์
import {Link} from 'react-router-dom';- ๋ค์ํ url์์๋
<Router path='/url'>๋ฅผ:์ ์ด์ฉํ์ฌ ๋ฐ๊พธ์ด์ค<Router path='/url/:day'>
day1๋ก ๋ค์ด์์ ๋ day๋ผ๋ ๋ณ์๋ก 1์ด๋ผ๋ ๊ฐ์ ์ป์ ์ ์์
๋ง์ฝ id๋ฉด id์ ๋ณ์๋ก 1์ ๊ฐ์ ์ป์ ์ ์๋ ๊ฒ!
Url ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ฒด ํํ๋ก ์กฐํ
import "./App.css";
import DayList from "./component/DayList";
import Header from "./component/Header";
import Day from "./component/Day";
import { BrowserRouter, Route, Switch } from "react-router-dom";
import EmptyPage from "./component/EmptyPage";>
function App() {
return (
<BrowserRouter>
<div className="App">
<Header />
<Switch>
<Route exact path="/">
<DayList />
</Route>
<Route path="/day">
<Day />
</Route>
<Route>
<EmptyPage />
</Route>
</Switch>
</div>
</BrowserRouter>
);
}
export default App;
import { Link } from "react-router-dom";
export default function Header() {
return (
<div className="header">
<h1>
<Link to="/">ํ ์ต ์๋จ์ด(๊ณ ๊ธ)</Link>
</h1>
<div className="menu">
<a href="#x" className="link">
๋จ์ด ์ถ๊ฐ
</a>
<a href="#x" className="link">
Day ์ถ๊ฐ
</a>
</div>
</div>
);
}
import dummy from "../db/data.json";
import { useParams } from "react-router-dom";
export default function Day() {
//dummy.words ์ฌ์ฉ
const wordList = dummy.words.filter((word) => word.day === Number(day));
const day = useParams().day;
// const {day} = useParams();
console.log(wordList);
return (
<>
<h2>Day {day} </h2>
<table>
<tbody>
{wordList.map((word) => (
<tr key={word.id}>
<td>{word.eng}</td>
<td>{word.kor}</td>
</tr>
))}
</tbody>
</table>
</>
);
}
import dummy from "../db/data.json";
import { Link } from "react-router-dom";
export default function DayList() {
console.log(dummy);
return (
<ul>
<li className="list_day">
{dummy.days.map((day) => (
<li key={day.id}>
<Link to={`/day/${day.day}`}>Day {day.day}</Link>
</li>
))}
</li>
</ul>
);
}
import { Link } from "react-router-dom";
export default function EmptyPage() {
return (
<>
<h2>์๋ชป๋ ์ ๊ทผ์
๋๋ค.</h2>
<Link to="/">๋์๊ฐ๊ธฐ</Link>
</>
);
}
ํ์ฌ router๋ v.6์ผ๋ก,
<Switch>๊ฐ ์กด์ฌํ์ง ์๋๋ค.
๋์ ์ด๋๋<Routes>๋ฅผ ์ด์ฉํด์ผ ํ๋ค.
import './App.css';
import Day from './component/Day';
import DayList from './component/DayList';
import Header from './component/Header';
import { BrowserRouter, Route , Routes } from 'react-router-dom';
import EmptyPage from './component/EmptyPage';
function App() {
return (
<div className='App'>
<BrowserRouter>
<Header />
<Routes>
<Route path="/" element={<DayList/>} />
<Route path="/day/:day" element={<Day/>} />
<Route path="*" element={<EmptyPage/>} />
</Routes>
</BrowserRouter>
</div>
);
}
์ฝ๋ฉ์๋ง๋์ ์ฝ๋๋ฅผ ์ ๋ง ์ฒ์๋ถํฐ ๋ณต๋ถํ ๊ฒ์ฒ๋ผ ๋๊ฐ์ด ๋ฐ๋ผํ์๋ค. ํ์ง๋ง, router๊ฐ ์คํ๋์ง ์์๊ณ (url์ ๋ฐ๋์์ง๋ง ํ๋ฉด์ด ์ถ๋ ฅ๋์ง ์์) ์ฝ๋ฉ์๋ง๋์ code๋ฅผ cloneํ ๋ค ๋ด ๊ฒ๊ณผ ๋น๊ตํ๊ธฐ๋ ํ๊ณ ์๋ก์ด vs code ์ฐฝ์์ ์๋ก์ด ํ์ผ์ ๋ง๋ค์ด์ ์ ๋ง ๋๊ฐ์ด ํ ๋ค ๋น๊ตํด๋ณด๊ธฐ๋ ํ์๋ค. ํ์ง๋ง ๊ณ์ ํด์ ๋จ๋ ๊ฒ์ node_module์์ index.js ํ์ผ์ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ๋ ํ๋ฉด์ด ์ถ๋ ฅ๋์ง ์๋ ๊ฒ์ด์๋ค... ๊ฒฐ๊ตญ node_moudule์ ์ฝ๋ฉ์๋ง๋ ๊ฒ๊ณผ ๋น๊ตํด๋ณด์๊ณ ์ง๊ธ์ ์ฌ์ฉ๋์ง ์๋ module ๋ค์ด ์๊ณ ๊ทธ๊ฒ๋ค์ด router๊ณผ ๊ด๋ จ๋์ด ์๋ ๊ฒ ๊ฐ๋ค๋ ๋๋์ ๋ฐ์๋ค.
node์ ๊ณต์ ํ์ด์ง์๋ soure-map-resolve ๋ฑ์ด ์ฐ์ด์ง ์๋๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์์๋ค. ์ด๋ฏธ router๋ ๋ฒ์ ์ด ํ ๋ฒ ์ ๋ฐ์ดํธ ๋์๊ณ ๊ทธ์ ๋ง์ถฐ node๋ ๋ฐ๋ ๊ฒ์ธ์ง ์ ํ router๊ฐ ๋ค์ง ์์ ์ง์ง ์์น๋์์น๋ ๋ค ํด๋ณด๊ณ ๊ฑฐ์ 3์๊ฐ์ ์ด ๋ฌธ์ ๋ง ์ก๊ณ ์์๋ค... ๊ทธ๋ฌ๋ ์๋ฌด๋ฆฌ ์๊ฐํด๋ ์ ๋ฐ์ดํธ๋ node์ router์ ์ถฉ๋์ด ์๋๊น? ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์ฝ๋ฉ์๋ง๋์ ๊ฐ์๊ฐ ๋๋ฌด ์ข์ง๋ง ์ด๋ฐ ๋ถ๋ถ์์๋ ๊ฝค ์์ฝ๋ค๋ ์๊ฐ์ ํ๊ณ ์ผ๋จ clone๋ ์ฝ๋๋ก ๊ณ์ํด์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ด์ด๋๊ฐ๊ณ ์ด์ฐจํผ ์งง์ ๊ฐ์๋, ์ดํ react๋ฅผ ์กฐ๊ธ ๋ ๊ณต๋ถ(์ฝ๋ฉ์ ํ ๋ฐ ์ฑ )ํ ๋ค์ v6์ ์ด์ฉํด์ ๋ค์ ํ๋ฒ ์ ๋๋ก ๊ณ ์ณ๋๊ฐ ๊ณํ์ด๋ค... ํ์ดํ ์ด๋ค ์ํ