CS 대비/FrontEnd Part

[React] 상태 관리

JellyApple 2023. 9. 28. 13:12

평소 강의나 직접 했던 상태 관리였지만 머릿속에만 있던 것을 직접 정리하는 시간이 필요했기에 본격적으로 프로젝트 전에 정리하고자 한다.

 

1. 상태란?
State 라고도 한다. React에서 상태란 데이터이다. 특히 변할 수 있는 데이터 혹은 값이라고 보면 될 것 같다.

예를 들면 로그인 유무 혹은 관리자 유무 등으로 나눌 수 있을 것이다.

import react , { useState } from 'react'

const page = () => {
  const [isSignIn , setIsSignIn] = useState(false)
  const [isAdmin , setIsAdmin] = useState(false)
  return (
   {
     isSignIn ? <div> 로그인 됐어요 </div> : <div>로그인 해주세요! </div>
   }
  )
}

 

2. 상태를 다루는 법 - useState
이러한 상태 즉 데이터를 다루는 법을 React에서는 Hook으로 제공해준다. 바로 useState이다. 

useState 구조는 다음과 같다.

-> const [ isAdmin , setIsAdmin ] = useState(false) 

구조 분해 할당으로 두 요소를 반환해준다. 0번째 요소 (isAdmin)는 현재 데이터를 담을 변수이고 1번째 요소는 그 데이터를 갱신할 수 있는 함수를 말한다. 그리고 useState() 이 소괄호 안에는 상태의 초기값을 넣어준다. 

 

3. 상태 변경하기 - setIsAdmin 
React에서 상태는 직접 변경할 수 없고 이 첫 번째 요소로 받아오는 함수로 상태를 변경해줘야 한다.  반드시 강제로 변경하면 안된다. 

import react , { useState } from 'react'

const page = () => {
  const [isSignIn, setIsSignIn] = useState(false)
  const signInHandler = (user: string) => {
   if(user === "LOGIN_USER"):
      setIsSignIn(true)
   else:
     setIsSignIn(false)
}
  
    
  return(
   <div>
     {user}
   </div>
)
{

 

4. 상태 관리하기 
React 에서는 이러한 상태들이  props 형태로 컴포넌트끼리 전해줘야 한다. 상태가 많아지면 많아질수록 점점 데이터 양도 많아지고 복잡해지기 때문에 이를 컴포넌트끼리 전해줄 때 쓸 데 없는 과정이 생기기도 한다. 이러한 것들을 방지하기 위해 상태를 하나로 모아서 관리하는 방식인 전역 상태 관리 라이브러리를 많이 사용한다. 예시로는 Redux , Recoil , MobX 등이 있는데 다음 게시글에서 Redux와 Recoil에 대해 알아보고자 한다.