๐Ÿšฉ๊ถŒํ•œ์ด ์žˆ๋Š” ์œ ์ €๋งŒ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ ๋‹ค.

๊ถŒํ•œ์ด ์—†๋Š” ์œ ์ €์—๊ฒŒ๋Š” ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ํ‹€์–ด์ค€๋‹ค.

โœ๏ธ<PrivateRoute /> Component ์ด์šฉํ•˜๊ธฐ

function App() {
  const [auth, setAuth] = useState(false);
  const PrivateRoute = () => {
    return auth ? (
      <User auth={auth} setAuth={setAuth} />
    ) : (
      <Navigate to="/login" />
    );
  };

โ†’ hook์ด ์•„๋‹Œ component์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์€ ๋ณ€๊ฒฝ ๊ฐ€

โ†’ auth๊ฐ€ true(๊ถŒํ•œ์ด ์žˆ๋‹ค๋ฉด), <User />ํŽ˜์ด์ง€๋กœ,

auth๊ฐ€ false(๊ถŒํ•œ์ด ์—†๋‹ค๋ฉด), <Login />ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

โœ๏ธ<PrivateRoute />์˜ ์‚ฌ์šฉ๋ฒ•

<Route path="/user" element={<PrivateRoute />} />

โ†’ ๋จผ์ € <User />ํŽ˜์ด์ง€๋กœ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด๋‘์—ˆ๋‹ค๊ฐ€

PrivateRoute ์ปดํฌ๋„ŒํŠธ์—์„œ auth์˜ true/false๋ฅผ ํ™•์ธ ํ›„, ๊ทธ๋Œ€๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ณด์—ฌ์ค„์ง€ ์„ค์ •ํ•ด์ค€ <Login />ํŽ˜์ด์ง€๋กœ ํ‹€์„์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.