2. Routes

React Router ์‚ฌ์šฉ๋ฒ•

์„ค์น˜

npm i react-router-dom

์‚ฌ์šฉํ•˜๊ธฐ

Routes ์•ˆ์— Route๋ฅผ ๋„ฃ์–ด์„œ path์™€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์ •

<Routes>
  <Route path="/" element={<HomePage />} />
  <Route path="/about" element={<AboutPage />} />
</Routes>

์ปดํฌ๋„ŒํŠธ๋ฅผ BrowserRouter๋กœ ๊ฐ์‹ผ ๋’ค ์‚ฌ์šฉํ•ด์ค˜์•ผํ•จ

function main() {
  const element = document.getElementById('root');

  if (!element) {
    return;
  }

  const root = ReactDOM.createRoot(element);

  root.render((
    <React.StrictMode>
      <BrowserRouter>
        <App />
      </BrowserRouter>
    </React.StrictMode>
  ));
}

ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์‹œ์—๋Š” BrowerRouter ๋Œ€์‹ ์— MemoryRouter๋ฅผ ์‚ฌ์šฉ

describe('App', () => {
  context('when the current path is "/"', () => {
    it('renders the homepage', () => {
      render(
        <MemoryRouter initialEntries={['/']}>
          <App />
        </MemoryRouter>,
      );
      screen.getByText(/Welcome/);
    });
  });
});

๋ผ์šฐํ„ฐ

  • ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ๊ฐ„์— ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ์ค‘๊ณ„ ์žฅ์น˜ ์˜๋ฏธ

  • ์œ„์น˜์— ๋Œ€ํ•œ ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ

  • ๋ผ์šฐํ„ฐ๋ผ๋Š” ๊ฐœ๋…์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํ†ต์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•˜์ง€๋งŒ SPA ํ™˜๊ฒฝ์—์„œ๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ ์•Œ๋งž์€ ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ณผ์ •์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ

  • ๋ฆฌ์•กํŠธ์—๋Š” ์ฃผ์†Œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์•„ ์ง์ ‘ ๋ธŒ๋ผ์šฐ์ € API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ทฐ๋ฅผ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•จ

React Router

  • ์„œ๋ฒ„์˜ ๋„์›€์—†์ด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Browser Router

  • HTML5๋ฅผ ์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ์ง€

  • ๋ธŒ๋ผ์šฐ์ €์˜ History API๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์œ„์น˜์˜ URL ์ €์žฅ

  • ์•ฑ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ

Route

  • URL๊ณผ ์ปดํฌ๋„ŒํŠธ, ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ๋ฐ์ดํ„ฐ ๋ฎคํ…Œ์ด์…˜์„ ์—ฐ๊ฒฐ

  • ์ค‘์ฒฉ ๋ผ์šฐํŠธ๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ฐ์ดํ„ฐ ์ข…์†์„ฑ์„ ๋‹จ์ˆœํ•˜๊ณ  ์„ ์–ธ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

  • path๋ฅผ ํ†ตํ•ด URL์„ ๋ถ„๊ธฐํ•  ์ˆ˜ ์žˆ๊ณ , ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Memory Router

  • ๋ฐฐ์—ด์— ์ฃผ์†Œ๋ฅผ ์ €์žฅ

  • ์™ธ๋ถ€ ์ž์›๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Œ

  • ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ history stack์„ ์กฐ์ž‘ํ• ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

Last updated