React

[React] Ep2. Hook API

모리스🙂 2025. 4. 7. 19:24

안녕하세요. 모리스입니다.🙂

이번 포스트에서는 지난 포스트에 이어서 React의 Hook API에 대해서 작성해볼게요.

 

React의 Hook API를 사용해 프로젝트를 진행하면서, 가장 기본적이면서 많이 사용하는 세 가지

useState, useEffect, useContext에 대해서 알아볼게요!

 

useState

컴포넌트 내부에서 상태값(state) 을 유지할 수 있게 해주는 가장 기본적인 Hook이예요.

📌 주요 개념

  • useState는 상태값과 해당 상태를 갱신할 수 있는 함수를 반환해요.
  • 컴포넌트가 처음 렌더링될 때, 반환된 state는 전달한 initialState 값으로 초기화 돼요.
const [state, setState] = useState(initialState);

💡 쉽게 말하면 위 코드에서 state는 initialState로 초기화된 상태값이고, setState는 이를 업데이트할 수 있는 함수입니다.

  • setState(newState) 를 호출하면 새로운 값으로 상태가 변경되고, 컴포넌트가 리렌더링.
  • 리렌더링 후에는 항상 변경된 값을 사용!

💻 예제

import React, { useState } from 'react';

export default function StateEx() {
  const [firstState, setFirstState] = useState(1);

  const setStateFunc = () => {
    setFirstState(2);
  }

  return (
    <TouchableOpacity onPress={setStateFunc}>
      <Text>{firstState}</Text>
    </TouchableOpacity>
  );
}

 


useEffect

컴포넌트 렌더링 이후에 사이드 이펙트(Side Effect) 를 수행할 수 있게 해주는 Hook이예요.

📌 주요 개념

  • useEffect는 명령형 코드나 비동기 작업을 실행할 수 있는 함수예요.
  • 렌더링이 완료된 이후에 실행된다는 것을 꼭 명심하세요!!
  • useEffect 함수의 두 번째 인자로 받는 deps는 배열형태안에 검사하고자 하는 특정 값(state)를 넣으면 해당 값이 변경 될 때마다 useState함수가 실행돼요. 빈 배열로 넣으면 컴포넌트가 처음 마운트 될 때 한 번만 실행 돼요.

 

useEffect(() => {
  // 실행할 작업
}, [deps]);
  • [] : 컴포넌트가 처음 마운트될 때 한 번만 실행.
  • [변수] : 특정 상태값이 변경될 때마다 실행.
  • 반환된 함수는 언마운트 시 실행.

💡 componentDidMount, componentDidUpdate, componentWillUnmount 를 대체할 수 있습니다.
단, 실행 시점은 렌더링이 끝난 직후로 비동기 지연 이벤트 이후에 실행됩니다.

💻 예제

import React, { useState, useEffect } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';

export default function EffectEx() {
  const [firstState, setFirstState] = useState(false);

  // 최초 마운트 시 실행
  useEffect(() => {
    console.log('첫 렌더링!');
  }, []);

  // firstState가 변경될 때마다 실행
  useEffect(() => {
    console.log('firstState 값 변경 감지!');
  }, [firstState]);

  return (
    <View>
      <TouchableOpacity onPress={() => setFirstState(!firstState)}>
        <Text>Click!</Text>
      </TouchableOpacity>
    </View>
  );
}

출력 예시:

  • 앱 시작 시: '첫 렌더링!'
  • 버튼 클릭 시: 'firstState 값 변경 감지!'

useContext

컴포넌트 트리에서 공통 데이터를 공유하기 위한 Hook이예요.
Context API를 더 간단하게 사용할 수 있는 방법!!

📌 주요 개념

  • React.createContext()로 생성한 Context 객체를 인자로 받아 해당 Context의 현재 값을 반환해요.
  • 가장 가까운 <Context.Provider>의 value 참조!!
const value = useContext(MyContext);
  • Provider가 갱신되면, 해당 Context를 사용하는 모든 컴포넌트는 자동으로 리렌더링!
  • context 값이 변경될 때마다 최신 상태를 반영!

💡 useContext(MyContext)는 클래스 컴포넌트에서
static contextType = MyContext 또는 <MyContext.Consumer> 와 같은 역할을 합니다.

⚠️ 단, useContext()는 Context를 구독만 할 수 있고, 값을 직접 수정할 수는 없습니다.

 


📝 마무리

Hook 기능 요약

useState 컴포넌트의 상태값 선언 및 갱신
useEffect 렌더링 후 동작(사이드 이펙트) 처리
useContext Context 값 구독 및 컴포넌트 간 데이터 공유

React Hook을 잘 활용하면 불필요한 상태관리 라이브러리 없이도
간단하고 직관적인 컴포넌트를 만들 수 있어요.

 

잘 못되었거나 수정할 부분이 있다면 언제든 댓글로 혼내주시길 바랍니다.!!

오늘도 긴 글 읽어주셔서 감사합니다.😊

'React' 카테고리의 다른 글

[React] Ep3. Recoil Hook  (0) 2025.04.08
[React] Ep2. Recoil API  (0) 2025.04.08
[React] Ep1. Recoil 시작하기  (1) 2025.04.08
[React] Ep1. Hook API  (2) 2025.04.07