20210306 18일차 로그인/로그아웃 로직 구현 완료

2021. 3. 7. 02:27·BootCamp_Codestates/Final Project

구현 사항

  • 회원가입 후 자동 로그인
  • 일반 로그인/로그아웃

컴포넌트들로 구성된 페이지의 경우 Props 를 이용하여 로그인 상태 변경 메소드와 로그인 상태를 전달하는 방식으로 구현했다.

로그인 상태를 전달하고 그 props 를 자식 컴포넌트에서 사용해야 리렌더링이 된다는 것을 깨닫는데 오랜 시간이 걸렸다. (상태가 업데이트 되어야 실행이 된다.)

결국 useEffect 함수를 사용하여 페이지를 렌더 시키는 방법인데, 로그인 상태와 토큰을 session storage 에 저장하여 useEffect 함수 안에서 사용하기 때문에, 새로고침을 해도 화면 상태가 유지된다.

예시는 회원가입 후 바로 로그인할 경우의 상태인 isSignUpIn 도 포함하고 있다.

useEffect(() => {
  const isLogin = JSON.parse(sessionStorage.getItem("isLogin") || "{}");
  const isSignUpIn = JSON.parse(sessionStorage.getItem("signUpIn") || "{}");
  const nickname = sessionStorage.getItem("nickName") as string;
  if (isLogin === true) {
    if (isSignUpIn === true) {
      setLoginMain(true);
	  } else {
		setLoginMain(signInStatus);
      }
        setNickName(nickname);
      } else {
        setNickName("");
        setLoginMain(signInStatus);
      }
      if (uemail.length > 0 && upassword.length > 0) {
       setMsgVisible(false);
      }
  }, [uemail.length, upassword.length, loginMain, signInStatus]);

본 웹 서비스의 페이지 구성이 독특하여 일반적으로 쓰이는 최상위 부모로부터의 props 전달 방식은 사용하지 못했다.

 

useEffect 의 두번째 인자에 특정 값을 넣는이유

.

useEffect 안에서 사용하는 상태나, props 가 있다면, useEffect 의 deps 에 넣어주어야 합니다. 그렇게 하는게, 규칙입니다.

만약 useEffect 안에서 사용하는 상태나 props 를 deps 에 넣지 않게 된다면 useEffect 에 등록한 함수가 실행 될 때 최신 props / 상태를 가르키지 않게 됩니다.

출처: react.vlpt.us/basic/16-useEffect.html

'BootCamp_Codestates > Final Project' 카테고리의 다른 글

20210308 20일차 그림판/일기장 로직 구현(99% 완성)  (0) 2021.03.09
20210307 19일차 그림판/일기장 로직 구현(85% 완성)  (0) 2021.03.07
20210305 17일차 회원가입 로직 구현 완료  (0) 2021.03.06
20210304 16일차 회원가입 로직 구현(미완)  (0) 2021.03.04
20210302 - 0303 14,15일차 그림판 PNG 저장 구현  (2) 2021.03.03
'BootCamp_Codestates/Final Project' 카테고리의 다른 글
  • 20210308 20일차 그림판/일기장 로직 구현(99% 완성)
  • 20210307 19일차 그림판/일기장 로직 구현(85% 완성)
  • 20210305 17일차 회원가입 로직 구현 완료
  • 20210304 16일차 회원가입 로직 구현(미완)
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;) N
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • Next.js
        • Flutter
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test N
        • LeetCode N
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    Data Structure
    DOM
    js pattern
    How memory manage data
    need a database
    mobile app
    자바스크립트 딥다이브
    자바스크립트
    TCP/IP
    Shared resources
    indie hacker
    structure of os
    leetcode
    딥다이브
    VoiceJournal
    Operating System
    Threads and Multithreading
    커리어
    Binary Tree BFS
    모던 자바스크립트 Deep Dive
    이벤트
    스코프
    polylingo
    database
    Network
    프론트엔드 성능 최적화 가이드
    Time complexity and Space complexity
    testing
    CPU scheduling algorithm
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
20210306 18일차 로그인/로그아웃 로직 구현 완료
상단으로

티스토리툴바