React

React 훅(Hook) 이란..?

의진이다람쥐 2025. 2. 15. 04:02

 

오늘은 리액트 훅에 대해서 포스팅해 보겠습니다.

React에서 훅은 함수형 컴포넌트에서 상태(state)와 생명주기 기능을 사용할 수 있도록 해주는 기능입니다.

 

원래 React에서는 클래스 컴포넌트에서만 상태 관리와 생명주기 메서드를 사용할 수 있었지만,

React 16.8부터 useStatue, useEffect 같은 훅을 사용하여 함수형 컴포넌트에서도 이를 활용 가능 하게 되었습니다.

 

📌 1️⃣ React Hook의 종류

React Hook은 크게 기본 훅, 추가 훅, 그리고 커스텀 훅으로 나뉩니다.

기본 훅

useState : 컴포넌트 상태 관리(state)

useEffect : 컴포넌트 생명주기 관리(side effects, API 요청 등)

useContext : 전역 상태 관리 (React Context API 활용)

 

추가 훅

useReducer : 복잡한 상태 로직을 관리

useRef : DOM 요소 또는 값 유지 

useMemo : 렌더링 성능 최적화

useCallback : 이벤트 핸들러 최적화

useLayoutEffect : useEffect와 유사하지만 렌더링 직후 동기적으로 실행

useImperativeHandle : 컴포넌트의 인스턴스를 직접조작

 

커스텀 훅 : 여러 훅을 조합하여 반복되는 로직을 재사용할 수 있음

 

주로 사용하는 대표적인  React Hook 3가지 설명 및 사용법을 적어보겠습니다.

 

📌 2️⃣ 기본 React Hook 상세 설명 및 사용법

 

 1️⃣. useState - 상태(state) 관리

import React, { useState } from "react";

const Counter = () => {
  const [count, setCount] = useState(0); // <== 초기값
  return (
    <div>
      <p>버튼을 몇번 눌렀을까요? {count}</p>
      <button onClick={() => setCount(count + 1)}>+1 증가 ~ </button>
    </div>
  );
};

export default Counter;

 

useState(초기값)을 사용하여 상태를 정의

버튼을 눌러 setCount를 호출하면 컴포넌트가 다시 렌더링 됩니다.

 

✅ 2. useEffect - 상태(state) 관리 (저번 포스팅에서 axios를 사용하여 API 요청법을 포스팅했으므로 융합해서 써볼게요)

 

 1️⃣. useEffect + axios 기본 예제 

import { useEffect } from "react";
import axios from "axios";

const FetchData = () => {
  useEffect(() => {

    const fetchData = async () => {
      try {
        const response = await axios.get("https://요청주소기입하세요/test");
        console.log("API 데이터:", response.data);
      } catch (error) {
        console.error("API 요청 중 오류 발생:", error);
      }
    };

    fetchData();
  }, []); 

  return <h2>콘솔에서 데이터를 확인하세요!</h2>;
};

export default FetchData;

 

설명

1.useEffect(() => {...}, [])

컴포넌트가 처음 렌더링될 때 API를 한 번만 요청하도록 설정합니다.

 

✅ 3. useContext - 전역 상태 관리

 

import { createContext, useContext } from "react";

// 1️⃣ 컨텍스트 생성
const ThemeContext = createContext("light");

const ThemeComponent = () => {
  // 2️⃣ 컨텍스트 값 가져오기
  const theme = useContext(ThemeContext);
  return <p>현재 테마: {theme}</p>;
};

const App = () => {
  return (
    <ThemeContext.Provider value="dark">
      <ThemeComponent />
    </ThemeContext.Provider>
  );
};

useContext는 React의 Context API를 사용하여 전역적으로 상태를 공유할 때 유용합니다.(ex. 다크모드)

코드 설명은 ThemeContext.Provider로 value를 설정하고 하위 컴포넌트에서 useContext로 가져올 수 있음.

 

🔥 최종 정리

설명
useState 컴포넌트 내부 상태 관리
useEffect 생명주기 관리, API 요청, 이벤트 핸들링
useContext 전역 상태 관리(Context API)
useReducer 복잡한 상태 로직 관리
useRef DOM 요소 참조, 렌더링과 무관한 값 유지

 

 

'React' 카테고리의 다른 글

React useState에 대해 자세히 알아보기  (2) 2025.02.19
[React] Axios란?  (0) 2024.10.11
React Component  (1) 2024.09.08
React가 무엇이고, 왜쓰는지?  (0) 2024.09.08