하나의 서비스는 여러개의 사이트(프로젝트[, 도메인])로 이루어져 있다.
서비스에는 유저용 사이트와 관리자 사이트가 별도로 존재한다.
더 많게는 판매자용, 구매자용, 중개자용 등등 여러 관리자 서버가 존재할 수 있다. ex) 쿠팡, 배달의 민족
로그인한 유저만 접근할 수 있는 페이지를 만들어보자!
Local Storage의 accessToken을 꺼내서 없으면 로그인 페이지로 이동시킨다.
Pre-rendering에서 실행되지 않도록 useEffect를 사용하고, localStorage에서 accessToken을 꺼내서 확인한다.
const router = useRouter();
const { data } = useQuery(FETCH_USER_LOGGED_IN);
useEffect(() => {
if (!localStorage.getItem("accessToken")) {
alert("로그인 후 이용이 가능합니다.");
router.push("/23-04-login-check");
}
}, []);
👆🏻 이렇게 작성하면 잘 작동은 하지만,, 로그인이 필요한 페이지마다 전부 이 코드를 작성해야 한다는 문제점이 있다....
HOC를 이용하면,
이 코드를 따로 빼서, 로그인이 필요한 페이지에 접근하기 전에 먼저 실행되게 할 수 있다.
먼저 실행되게 하는 컴포넌트를 HOC(Higher Order Component)라고 한다.