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;)
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
        • Web Development
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • React
        • Next.js
        • Flutter
        • Testing
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test
        • LeetCode
        • 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
  • 블로그 메뉴

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

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바