์ด๋ฏธ ๋ก๊ทธ์ธ ๋์ด์๋ ์ ์ ์ ๊ฒฝ์ฐ login ๋ฐ signupํ์ด์ง ์ด๋ ์ ํํ์ด์ง๋ก ์ด๋ํ๋ค.
import React, { useContext } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import HomePage from "../Home/HomePage";
import ProductsPage from "../Products/ProductsPage";
import SingleProductPage from "../SingleProduct/SingleProductPage";
import SignupPage from "../Authentication/SignupPage";
import LoginPage from "../Authentication/LoginPage";
import CartPage from "../Cart/CartPage";
import MyOrderPage from "../MyOrderPage/MyOrderPage";
import Logout from "../Authentication/Logout";
import ProtectedRoute from "./ProtectedRoute";
import UserContext from "../../contexts/UserContext";
const Routing = () => {
const user = useContext(UserContext);
return (
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/products" element={<ProductsPage />} />
<Route path="/product/:id" element={<SingleProductPage />} />
<Route
path="/signup"
element={user ? <Navigate to="/" /> : <SignupPage />}
/>
<Route
path="/login"
element={user ? <Navigate to="/" /> : <LoginPage />}
/>
<Route element={<ProtectedRoute />}>
<Route path="/cart" element={<CartPage />} />
<Route path="/myorders" element={<MyOrderPage />} />
<Route path="/logout" element={<Logout />} />
</Route>
</Routes>
);
};
export default Routing;
Routing ์์ useContext๋ก ๋ก๊ทธ์ธ ๋ ์ ์ ์ ๋ณด๋ฅผ ๋ฐ์์์
signup๊ณผlogin์ user๊ฐ ์์ ๊ฒฝ์ฐ์๋ "/" ํํ์ด์ง๋ก , ์์ ๊ฒฝ์ฐ์ ๊ฐ ํ์ด์ง๋ก ์ด๋ํ๊ฒ ์ค์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฅ๋ฐ๊ตฌ๋/๋ด์ฃผ๋ฌธ/๋ก๊ทธ์์์ ๊ฒฝ์ฐ
๊ณ ์ฃผ์์ฐฝ์ผ๋ก ๋ก๊ทธ์ธ ๋์ง ์์ ์ ์ ๊ฐ ์ ๊ทผ ์๋ฅผ ๋๋นํด์
ProtectedRoute jsx๋ฅผ ์์ฑํ์ฌ
์ ์ ๊ฐ ์์ ๊ฒฝ์ฐ์๋ Outlet ์ฆ ์๋ ์์ฒญ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ ๊ฒฝ์ฐ์๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๊ฒ ๋ง๋ ๋ค.
import { useContext } from "react";
import { Navigate, Outlet } from "react-router-dom";
import UserContext from "../../contexts/UserContext";
const ProtectedRoute = () => {
const user = useContext(UserContext);
return user ? <Outlet /> : <Navigate to="/login" />;
};
export default ProtectedRoute;
Routing.jsx๋ก ๋์์์ ์์ ์ธ๊ฐ์ ๋ฃจํธ๋ ProtectedRoute ์ปดํฌ๋ํธ๋ก ๊ฐ์ธ์ ๊ด๋ฆฌํ๋ค.
<Route element={<ProtectedRoute />}>
<Route path="/cart" element={<CartPage />} />
<Route path="/myorders" element={<MyOrderPage />} />
<Route path="/logout" element={<Logout />} />
</Route>