사과먹는중
당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • emotion
  • 팀플
  • next.js
  • 리액트
  • React-hook-form
  • 팀 프로젝트
  • 배포
  • javascrpit
  • 코드캠프
  • algorithm
  • 공통 컴포넌트
  • 배열
  • 회고
  • JS
  • 코딩 부트캠프
  • 코딩
  • refreshtoken
  • 부트캠프
  • CSS
  • graphql
  • react
  • 팀프로젝트
  • 자바스크립트
  • ssg
  • typescript
  • 프로그래머스
  • javascript
  • 알고리즘
  • HTML
  • 프론트엔드

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니
프론트엔드✏️/코드캠프

react custom hook

프론트엔드✏️/코드캠프

react custom hook

2022. 6. 13. 20:32
728x90
반응형

 

import { withAuth } from "../../../src/components/commons/hocs/withAuth";
import MyPageContainer from "../../../src/components/units/user/mypage/UserMypage.container";

export function MyPage() {
  return <MyPageContainer />;
}

export default withAuth(MyPage);

Mypage 부분,

HOC (MyPage를 withAuth의 인자로 주고 그 return을 export함)

 

이걸 커스텀훅을 사용하는 방식으로 바꿀건데, page가 아니라 container에서 작업하기로 했다. 

 

 

import { useAuth } from "../../../commons/hooks/useAuth";

export default function MyPageContainer() {

  useAuth();

  return (
    <div>마이 페이지
    </div>
  );
}

useAuth를 import하고 그냥 useAuth(); 함수 호출 하면 끝! 간단하다~~~ 

 

 

밑은 useAuth.tsx

// useAuth.tsx
import { useRouter } from "next/router";
import { useEffect } from "react";
import { useRecoilState } from "recoil";
import { accessTokenState } from "../../../commons/store";

export function useAuth() {
  const router = useRouter();
  const [accessToken, setAccessToken] = useRecoilState(accessTokenState);

  console.log(accessToken);
  useEffect(() => {
    if (!accessToken) {
      alert("로그인 후~하고 ");
      router.push("/user/login"); // 여기 visited page로...
    }
    // if (!localStorage.getItem("accessToken")) {
    //   // 있는지 없는지 찾아갖고 옴
    //   alert("로그인 후 이용 가능합니다!");
    //   router.push("/user/login");
    // }
  }, []);
}

주석 부분은 localStorage에서 찾아오던 방식

 

++ 0616 추가) 내가 로그인 계속 끊기던 이유가 state에서만 저장해서였다. localstorage는 페이지 껐다 켜도 남아있기 때문에 accesstoken을 갖고 있고!!! 그래야 로그인을 유지한다. 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글

알고리즘 - 시저암호, 아스키코드 두시간 걸렸다...  (0) 2022.06.14
220613 프론트엔드 부트캠프 34일차:  (0) 2022.06.14
알고리즘 - 객체, 맵(map)  (0) 2022.06.13
리액트 커링(React Currying)  (0) 2022.06.12
220612 프론트엔드 부트캠프 33일차: 주말  (0) 2022.06.12
    '프론트엔드✏️/코드캠프' 카테고리의 다른 글
    • 알고리즘 - 시저암호, 아스키코드 두시간 걸렸다...
    • 220613 프론트엔드 부트캠프 34일차:
    • 알고리즘 - 객체, 맵(map)
    • 리액트 커링(React Currying)
    당근먹는하니
    당근먹는하니

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.