3. Router

React Router ๋ฒ„์ „ 6.4๋ถ€ํ„ฐ ๋ผ์šฐํŒ… ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ผ์šฐํŒ… ์ •๋ณด๋งŒ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅ

์‚ฌ์šฉ๋ฒ•

route ์ •๋ณด๋ฅผ ๊ฐ์ฒด๋กœ ๋งŒ๋“ฆ

const routes = [
  {
    element: <Layout />,
    children: [
      { path: '/', element: <HomePage /> },
      { path: '/about', element: <AboutPage /> },
   ],
  },
];

๋งŒ๋“  ๊ฐ์ฒด๋ฅผ createBrowserRouter์— ๋„˜๊ฒจ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  <RouterProvider/>์— ์ „๋‹ฌ

  • createBrowserRouter๋Š” DOM History API๋ฅผ ์ด์šฉํ•ด URL์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํžˆ์Šคํ† ๋ฆฌ ์Šคํƒ์„ ๊ด€๋ฆฌ

  • 6.4๋ฒ„์ „๋ถ€ํ„ฐ๋Š” loader, action, fetcher์˜ data API ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง

  • <RouterProvider> ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ ๋ผ์šฐํ„ฐ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋ Œ๋”๋ง

const router = createBrowserRouter(routes);

root.render((
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>
));

path์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋  ์ปดํฌ๋„ŒํŠธ์˜ ์œ„์น˜๋Š” <Outlet/> ์œผ๋กœ ์ง€์ •

function Layout() {
  return (
    <div>
      <Header />
      <Outlet />
      <Footer />
    </div>
  );
}

ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ์‹œ์—๋Š” createMemoryRouter๋ฅผ ํ†ตํ•ด ๋ผ์šฐํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธ

describe('routes'', () => {
  function renderRouter(path: string) {
    const router = createMemoryRouter(routes, { initialEntries: [path] });
    render(<RouterProvider router={router} />);
  }

  context('when the current path is "/"', () => {
    it('renders the home page', () => {
      renderRouter('/');

      screen.getByText(/Hello/);
    });
  });

  context('when the current path is "/about"', () => {
    it('renders the about page', () => {
      renderRouter('/about');

      screen.getByText(/About/);
    });
  });
});

๋Š๋‚€ ์ 

๋ผ์šฐํŒ…๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š”๊ฑธ ๋ณด๋ฉด์„œ ๋ญ˜ํ•˜๋“  ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๊ฐ€ ๊ฐ•์˜๋„ ์งง๊ณ  ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํฌ๊ฒŒ ์–ด๋ ค์›Œ๋ณด์ด์ง€ ์•Š์Œ์—๋„ ์ €๊ฑธ ๋‚˜ํ˜ผ์ž ์ ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋” ๋งŽ์€ ํ›ˆ๋ จ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ํŠนํžˆ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๊ฑธ ๋งŽ์ด ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

Last updated