라우팅이란 ?
클라이언트 사이드 라우팅이란 ?
라우팅과 클라이언트 사이드 라우팅 비교
설치
기본 사용법
import { createBrowserRouter, RouterProvider } from "react-router-dom";
const router = createBrowserRouter([
{
path: "/",
element: <p>Home</p>,
errorElement: <p>Not Found</p>
},
{
path: "/Second", // localhost:3000/Second
element: <p>Second</p>, // 해당 페이지에 보여줄 내용
errorElement: <p>Not Found</p> // 에러가 났을 때 보여줄 내용
},
]);
export default function App() {
return <RouterProvider router={router} />;
// Root.jsx
import { Outlet } from "react-router-dom";
import Navbar from "../components/Navbar";
export default function Root() {
return (
<div>
<Navbar />
<Outlet />
</div>
);
}
// App.jsx
import { createBrowserRouter, RouterProvider } from "react-router-dom";
const router = createBrowserRouter([
// path 라는 루트 요소 안에 자식이 있는데, 자식들의 최상위 경로는 <Home /> 이다.
// 경로가 "/videos" 라면 <Videos /> 를 보여준다.
// 이렇게 하면 아울렛 컴포넌트 안에서 해당하는 컴포넌트를 보여준다.
{
path: "/",
element: <Root />,
errorElement: <NotFound />,
children: [
{ index: true, element: <Home /> }, // 기본 페이지는 <Home />
{ path: "/videos", element: <Videos /> },
{ path: "/videos/:id", element: <VideosDetail /> },
].
},
{
path: "/Second",
element: <p>Second</p>,
errorElement: <p>Not Found</p>
},
]);
export default function App() {
return <RouterProvider router={router} />;
// Videos.jsx
import { useState } from "react";
import { useNavigate } from "react-router-dom";
const Input = () => {
const [content, setContent] = useState("");
const navigate = useNavigate();
const contentChangeHandler = (event) => {
setContent(event.target.value);
};
const onSubmitHandler = (event) => {
event.preventDefault();
setContent("");
navigate(`/videos/${content}`) // Link 처럼 이동하는 훅
}
return (
<form onSubmit={onSubmitHandler}>
<input
type="text"
id="content"
value={content}
onChange={contentChangeHandler}
/>
</form>
export default Input;
// VideoDetail.jsx
import { useParams } from "react-router-dom";
export default function VideoDetail() {
const { id } = useParams();
return <div>{id}</div>
}