[React] react-router-dom

DongHyeon Jungยท2022๋…„ 10์›” 3์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
9/15
post-thumbnail

React router dom ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ“ย ์„ค์น˜ํ•˜๊ธฐ

https://reactrouter.com/docs/en/v6/getting-started/overview

$ npm i react-router-dom@5.3.0
$ yarn add react-router-dom
import { BrowserRouter, Route, Link, Routes} from "react-router-dom";

<Router> 
      <Routes>
        <Route path="/" >
	        <Home />
				<Route/>
        <Route path="/about">
	        <About />
				<Route/>
      </Routes>
</Router>

path ์•ˆ์— url์ด ์žˆ๋‹ค๋ฉด, Home์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

Switch ๋ง๊ณ  Routes๋ฅผ ์“ฐ๋„๋ก ํ•˜์ž

import { BrowserRouter, Route, Link, Routes } from 'react-router-dom';

function App() {
  return (
    <BrowserRouter>
      <div>
        <Link to="/">Home</Link>
        <br />
        <Link to="/movie">Movie</Link>
        <br />
        <Link to="/about">About</Link>
        <br />
      </div>
      <Routes>
        <Route exact path="/" element={Home} />
        <Route path="/movie" element={Movie} />
        <Route path="/about" element={About} />
      </Routes>
    </BrowserRouter>
  );
}
  • React-Router-dom์€ ์ปดํฌ๋„ŒํŠธ์˜ ๋ชจ์Œ์ง‘์ด๋‹ค.
  • ์šฐ๋ฆฌ๊ฐ€ ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ ์‹ถ์€ ๊ฒƒ๋“ค์ด ์•ˆ์— ๋“ค์–ด๊ฐ„๋‹ค.
  • path="/movie", path=โ€/aboutโ€ ์˜ url๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ Home, About ์„ ๋ณด์—ฌ์ค€๋‹ค.
  • Switch ์ปดํฌ๋„ŒํŠธ๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ Route๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด์ œ๋Š” Switch๋Œ€์‹  Routes๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • Route ์ปดํฌ๋„ŒํŠธ๋Š” ๋งŒ์•ฝ ์†์„ฑ์— ์„ค์ •๋œ URL๊ณผ ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ์ผ์น˜ํ•  ๋•Œ, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ, ํ•จ์ˆ˜๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.
  • Routes ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ Route ์š”์†Œ๋“ค์„ ์‚ดํ•€ ํ›„ ์ตœ์ ์˜ ์กฐํ•ฉ์„ ์ฐพ๊ณ , UI ๊ฐ€์ง€๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.
  • BrowserRouter ์ปดํฌ๋„ŒํŠธ๋Š” history API๋ฅผ ์‚ฌ์šฉํ•ด URL๊ณผ UI๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ๋ผ์šฐํ„ฐ์ž…๋‹ˆ๋‹ค.
  • BrowserRouter๋กœ ๊ฐ์‹ธ๋ฉด ์ž‘๋™์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹คโ€ฆ
  • Router๋Š” ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—๋งŒ ์ ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค โ†’ ์‚ฌ์šฉํ•  ์œ„์น˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹˜โ€ฆ

ํ•œ Route ์—์„œ ๋‹ค๋ฅธ Route๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์€??

<h1>
   <Link to="/movie">{title}</Link>
</h1>

์ด๋ ‡๊ฒŒ Link์ปดํฌ๋„ŒํŠธ๋ฅผ import ํ•œ ๋’ค์—, url์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€