Skip to content

react_router

๊น€์˜ˆ์ง„ edited this page Nov 7, 2020 · 3 revisions

Routing์ด๋ž€?

  • ๋‹ค๋ฅธ ์ฃผ์†Œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋ผ์šฐํŒ…์ด๋ผ๊ณ  ํ•œ๋‹ค.

React์—์„œ ๋ผ์šฐํŒ…ํ•˜๊ธฐ

  • React ์ž์ฒด์—๋Š” ์ด ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋ธŒ๋ผ์šฐ์ €์˜ API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • react-router ์„ค์น˜ํ•˜๊ธฐ
    • npm i react-router-dom

react-router

  • react-router๋Š” ์จ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ์„œ, ๊ณต์‹ ๋ผ์šฐํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ฆฌ์•กํŠธ ๋ผ์šฐํŒ…์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์—์„œ ์ด๋ค„์ง€๋Š” ๋ผ์šฐํŒ…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.
  • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๋„ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋“ค์ด ํ•จ๊ป˜ ๋”ธ๋ ค์˜จ๋‹ค.

react-router์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์ปดํฌ๋„ŒํŠธ

  • <BrowserRouter /> : HTML5 history API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์šฐํ„ฐ
  • <Route /> : ์š”์ฒญ ๊ฒฝ๋กœ์™€ ๋ Œ๋”๋งํ•  ์ปดํฌ๋„ŒํŠธ ์„ค์ •
  • <Switch /> : ํ•˜์œ„์— ๋ผ์šฐํ„ฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒ
    • ๋ผ์šฐํŠธ๋“ค์„ ์ด ์ปดํฌ๋„ŒํŠธ์— ๊ฐ์‹ธ๋ฉด ๋งค์นญ๋˜๋Š” ์ฒซ๋ฒˆ์งธ ๋ผ์šฐํŠธ๋งŒ ๋ณด์—ฌ์ฃผ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
    • switch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด exact๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋จ
  • <Redirect /> : ์š”์ฒญ ๊ฒฝ๋กœ๋ฅผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜
  • ์˜ˆ์‹œ ์ฝ”๋“œ
import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import { Home, About, Posts } from 'pages';
import Menu from 'components/Menu';

function App() {
    return (
        <BrowserRouter>
            <Switch>
                <Route exact path="/" component={Home}/>
                <Route path="/about/:name" component={About}/>
                <Route path="/about" component={About}/>
                <Redirect path="*" to="/" />
            </Switch>
        </BrowserRouter>
    );
}

export default App;

์ฐธ๊ณ 

Clone this wiki locally