본문 바로가기
Programming

React useState와 useEffect

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2025. 10. 24.
반응형

📜 useState와 useEffect 기본 사용법

React에서는 상태 관리와 사이드 이펙트를 처리하기 위해 두 가지 주요 훅인 useStateuseEffect를 사용합니다. 이들 훅은 함수형 컴포넌트에서 상태와 생명주기를 관리할 수 있게 해 줍니다.

🔍 useState 훅

useState는 컴포넌트의 상태를 관리할 때 사용되는 훅입니다. 이 훅을 통해 상태 변수와 그 값을 변경하는 함수를 선언할 수 있습니다.

📌 useState 기본 사용법

useState는 배열을 반환합니다. 첫 번째 요소는 현재 상태의 값이고, 두 번째 요소는 상태를 업데이트하는 함수입니다.

import { useState } from 'react';

function Counter() {
  // 상태 변수 'count'를 선언하고, 초기값을 0으로 설정
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>현재 카운트: {count}</p>
      <button onClick={() => setCount(count + 1)}>카운트 증가</button>
    </div>
  );
}
  

위 예제에서는 count라는 상태 변수와, 이를 변경하는 setCount 함수를 사용하여 카운트를 증가시키는 버튼을 만들었습니다.

📝 useEffect 훅

useEffect는 컴포넌트의 생명주기 동안 발생하는 사이드 이펙트를 처리하는 훅입니다. 예를 들어, API 호출, DOM 조작, 타이머 설정 등 다양한 비동기 작업을 처리할 수 있습니다.

📌 useEffect 기본 사용법

useEffect는 함수형 컴포넌트가 렌더링 된 후에 실행되는 사이드 이펙트를 정의합니다. 기본적으로 컴포넌트가 마운트 될 때와 업데이트될 때마다 실행됩니다.

import { useState, useEffect } from 'react';

function Timer() {
  const [time, setTime] = useState(0);

  // 1초마다 타이머 업데이트
  useEffect(() => {
    const interval = setInterval(() => {
      setTime(prevTime => prevTime + 1);
    }, 1000);

    // 컴포넌트가 언마운트될 때 타이머를 정리
    return () => clearInterval(interval);
  }, []); // 빈 배열로 설정하여 컴포넌트 마운트 시 한 번만 실행

  return (
    <div>
      <p>경과 시간: {time}초</p>
    </div>
  );
}
  

위 예제에서는 useEffect를 사용하여 타이머를 설정하고, 컴포넌트가 원마운트될 때 타이머를 정리하는 방법을 보여줍니다.

💡 useState와 useEffect 함께 사용하기

useStateuseEffect는 함께 사용하여 복잡한 상태와 비동기 작업을 처리할 수 있습니다.

import { useState, useEffect } from 'react';

function DataFetcher() {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    // 데이터 fetch
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => {
        setData(data);
        setLoading(false);
      })
      .catch(error => {
        console.error('데이터 로드 실패:', error);
        setLoading(false);
      });
  }, []); // 빈 배열로 설정하여 한 번만 실행

  if (loading) {
    return <p>로딩 중...</p>
  }

  return (
    <div>
      <h1>데이터를 불러왔습니다!</h1>
      <p>{JSON.stringify(data)}</p>
    </div>
  );
}
  

🎯 요약

  • useState: 컴포넌트의 상태를 관리하는 훅입니다. 상태 변수를 선언하고, 해당 상태를 업데이트하는 함수를 반환합니다.
  • useEffect: 컴포넌트의 생명주기 동안 사이드 이펙트를 처리하는 훅입니다. 주로 데이터 가져오기, 타이머 설정, 구독 등을 처리합니다.
  • useState와 useEffect 함께 사용하기: 상태 관리와 비동기 작업을 결합하여 복잡한 로직을 처리할 수 있습니다.
반응형

'Programming' 카테고리의 다른 글

React useEffect  (41) 2025.10.26
React 카운터  (65) 2025.10.25
React 조건부 렌더링 (Conditional Rendering)  (67) 2025.10.23
React 리스트 렌더링 (List Rendering)  (57) 2025.10.22
React 이벤트 처리 (Event Handling)  (47) 2025.10.21