React-Router-Dom
- 리액트에서 라우팅을 하기 위해 사용하는 라이브러리
Routing
- 우리가 주소창에 url을 입력했을 때 네트워크 서버상에 해당하는 url의 페이지 전체의 데이터를 요청헙니다. 서버에서 요청된 url에 해당하는 데이터를 전달해 줍니다.
CSR(client side routing)
- url을 입력했을 때 서버상에 전체적인 데이터를 요청하는 것이 아니라 어플리케이션 내에서 업데이트가 필요한 부분만 동적으로 데이터를 요청합니다. 따라서 완전히 새로운 html이 업데이트 되는 것이 아니라 각각 해당 페이지에서 필요한 데이터를 fetch(네트워크 통신)을 이용해서 필요한 부분만 업데이트 합니다.
기본 사용
import React from "react";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
const router = createBrowserRouter([
{
path: "/",
element: <p>Home</p>,
errorElement: <p>Not Found</p>,
},
{
path: "/videos",
element: <p>Videos</p>,
},
]);
export default function Router() {
return <RouterProvider router={router} />;
}
Outlet
- 페이지 전체를 변경하는 것이 아니라 원하는 부분만 변경하기 위해서 사용합니다.
import { createBrowserRouter , RouterProvider } from "react-router-dom";
const router = createBrowserRouter([
{
path: "/",
element: <App />,
errorElement: <NotFound />,
children: [
{ index: true, element: <Home /> },
{ path: "videos", element: <Videos /> },
],
},
]);
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<React.StrictMode>
<RouterProvider router={router} />
</React.StrictMode>
);
import { Outlet } from "react-router-dom";
import SearchHeader from "./components/SearchHeader";
const queryClient = new QueryClient();
function App() {
return (
<>
<SearchHeader />
<Outlet />
</>
);
}
export default App;