React Router은 React 생태계에서 가장 중요한 컴포넌트 중 하나이다. 우리는 먼저 예제를 통해서 private, public, restricted route와 같은 다양한 라우트를 설계하는 방법을 배울 것이다. 설명을 위해 아래 컴포넌트를 가진 간단한 어플리케이션을 만들어 보자.
1. Home: 모두가 접근할 수 있는 public 라우터
2. Dashboard: 권한을 가진 사용자만 접근할 수 있는 private 라우터
3. Sign-in: 권한을 가지지 않은 사용자만 볼 수 있는 restricted 라우터
Private Route
PrivateRoute 컴포넌트는 모든 private 라우트를 위한 청사진이다. 만약 유저가 로그인 되어있다면 해당 컴포넌트를 렌더링하고 그렇지 않다면 sign-in page로 redirect한다.
Routes.js
<PrivateRoute component={Layout} path="/" />
PrivateRoute.js
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
export default function PrivateRoute({ component: Component, ...rest }) {
return (
<>
<Route
{...rest}
render={(props) => (sessionStorage.getItem('user') ? <Component /> : <Redirect to="login" />)}
/>
</>
);
}
기존에 useAuth를 이용해서 user값 여부를 판단한 뒤 삼항 연산자를 통해 렌더링했다. 하지만 잘 안됐다. 이유도 모르겠다. 그래서 그냥 sesstionStorage에서 바로 값을 가져와서 판단했다.
'Frontend > React' 카테고리의 다른 글
Jest with React (0) | 2021.09.10 |
---|---|
react-chartjs-2 (0) | 2021.07.27 |
2021-06-22 :: React로 스탑워치 만들기 (0) | 2021.06.22 |
2021-05-21 :: useEffect (0) | 2021.05.25 |
2021-05-20 :: Context API (0) | 2021.05.20 |