React useState

2024. 10. 31. 16:30·웹개발/REACT
728x90

안녕하세요! 오늘은 제가 React를 공부하면서 가장 먼저 마주한 React Hook 중 UseState에 대해 이야기 해보려고 합니다.


useState가 뭐길래? 🤔

React에서 가장 기본이 되는 Hook인 useState!
쉽게 말하면 우리가 만드는 컴포넌트에 "기억력"이라는 능력을 주는건데요.

코드 구조부터 알아보겠습니다.

const [count, setCount] = useState(0);

 

  • count: 우리가 기억하고 싶은 값
  • setCount: 그 값을 변경할 수 있는 함수
  • useState(0): 처음 시작할 때의 값

* 두 번째 자리에는 통상적으로, 첫 번째 변수앞에 set을 붙이고 대문자로 시작하는 방법을 사용한답니다!


실전에서는 이렇게 사용합니다.

보통 사용하는 예시를 보여드리겠습니다.

function LikeButton() {
  const [likes, setLikes] = useState(0);

  return (
    <button onClick={() => setLikes(likes + 1)}>
      좋아요 {likes}개 👍
    </button>
  );
}

 

버튼을 클릭할 때마다 좋아요 수가 1씩 증가하는 간단한 컴포넌트예요. 너무 쉽죠?

  • 초기 likes 값은 useState(0)으로, 초기값을 0으로 설정합니다.
  • onClick동작이 발생되었을때, setLikes()함수에서 likes값에 1을 더하여 상태를 업데이트합니다.

!!! 주의사항🚫!!!

1. 초기값은 신중하게!

// 이렇게 무거운 계산은 콜백으로!
const [data, setData] = useState(() => heavyCalculation());

2. 이전 상태 활용하기!

// 이렇게 하면 더 안전해요
setCount(prevCount => prevCount + 1);

3. 여러 상태를 한번에 관리!

const [user, setUser] = useState({
  name: '',
  age: 0,
  hobby: ''
});

자주 하는 실수들 🚫

1. 상태 업데이트는 비동기로 처리됩니다.

// ❌ 이렇게 하면 안 돼요
setCount(count + 1);
console.log(count); // 바로 반영 안 됨!

// ✅ 이렇게 하세요
setCount(prevCount => prevCount + 1);
더보기

count+1이 업데이트 후, 출력되는 것이 아닌, 업데이트와 동시에 출력하기 때문이다.

2. 객체 상태 변경할 때는 스프레드 연산자를 사용하자.

// ✅ 이렇게 해야 해요
setUser(prevUser => ({
  ...prevUser,
  name: '치킨브랜드'
}));
728x90

'웹개발 > REACT' 카테고리의 다른 글

React Router DOM과 MPA구조  (3) 2024.11.13
vite로 react 설치하기  (0) 2024.11.12
vite로 react설치 명령어  (0) 2024.08.02
리액트 상태 관리의 필수 도구: Redux로 상태 관리 쉽게 배우기  (0) 2024.07.31
리액트 컴포넌트와 JSX 문법: Virtual DOM의 기본 이해  (0) 2024.07.31
'웹개발/REACT' 카테고리의 다른 글
  • React Router DOM과 MPA구조
  • vite로 react 설치하기
  • vite로 react설치 명령어
  • 리액트 상태 관리의 필수 도구: Redux로 상태 관리 쉽게 배우기
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    react
    프론트엔드
    트랜스포트계층
    네트워크
    github
    ui컴포넌트
    자바스크립트
    JS
    componique
    프론트엔드개발
    리액트
    TCP
    데이터전송
    NextJs
    코딩
    프로그래밍
    tailwind
    JavaScript
    상태관리
    웹개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
React useState
상단으로

티스토리툴바