TIL

Hook

devyu0001 2025. 1. 31. 20:03

React Hook은 16.8 버전부터 새로 추가된 기능이다.

Hook은 함수형 컴포넌트에서 React state와 생명주기 기능을 연동(hook into) 할 수 있게 해주는 함수라고 한다.

Hook은 class 안에서는 동작하지 않으며, 대신 class 없이 React를 사용할 수 있게 해주는 것이라고 합니다

앞에 use 가 들어가면 대부분 Hook이다.

 

React의 주요 Hook 중에서 useState, useEffect, useContext, useRef에 대해 알아보자

 

1. useState

useState는 컴포넌트에서 상태(state)를 관리할 수 있도록 해주는 Hook입니다

import { useState } from "react";

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

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

 

  • useState(초기값)을 사용하여 상태를 생성하고,
  • 상태값과 이를 변경할 수 있는 함수 [state, setState]를 반환합니다.

2. useEffect

useEffect는 컴포넌트가 렌더링 될 때 특정 동작을 수행하도록 하는 Hook입니다.

import { useState, useEffect } from "react";

function Timer() {
  const [seconds, setSeconds] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setSeconds((prev) => prev + 1);
    }, 1000);

    return () => clearInterval(interval); // 컴포넌트가 언마운트될 때 정리
  }, []);

  return <p>경과 시간: {seconds}초</p>;
}

 

 

  • 첫 번째 매개변수: 실행할 함수
  • 두 번째 매개변수: 의존성 배열 (빈 배열 []이면 최초 한 번만 실행)
  • 반환하는 함수는 정리(clean-up) 함수 (언마운트 시 실행)

3. useContext

useContext전역 상태를 쉽게 공유할 수 있도록 해주는 Hook입니다.

import { createContext, useContext } from "react";

const ThemeContext = createContext("light");

function ThemeComponent() {
  const theme = useContext(ThemeContext);
  return <p>현재 테마: {theme}</p>;
}

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

 

 

  • createContext(defaultValue)로 콘텍스트 생성
  • useContext(Context)를 사용하여 콘텍스트 값을 가져옴
  • Provider를 통해 하위 컴포넌트에 값 전달

4. useRef

useRef는 요소에 직접 접근하거나, 값이 변경되어도 리렌더링이 필요 없는 데이터저장하는 데 사용됩니다.

import { useRef, useEffect } from "react";

function InputFocus() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus(); // 마운트되면 자동으로 포커스
  }, []);

  return <input ref={inputRef} type="text" placeholder="자동 포커스" />;
}

 

 

  • useRefcurrent 속성을 통해 값을 저장
  • 값이 변경되어도 컴포넌트는 다시 렌더링 되지 않음
  • DOM 요소에 접근할 때 자주 사용됨

5. custom Hook

리액트에 내장된 이러한 Hook 함수들을 활용해 직접 필요한 훅을 만들 수도 있다고 합니다. 

custom Hook을 활용하면 중복되는 코드를 줄일 수 있고 이전 클래스형 React컴포넌트에서는 불가능했던 로직 공유의 유연성을 제공한다고 합니다.

 

 

 

 

 

강의를 보면서 여러 Hook에 대해서 공부하고 있는데 useState는 저번에 코드를 사용해 봐서 이제 이해가 가는데 나머지 Hook들은 아직 잘 이해가 안간다

다음주에 개인과제가 또 나가니까 그때 사용을 해 봐야겠다.

 

'TIL' 카테고리의 다른 글

🔍 일반 객체 ({}) vs Map  (0) 2025.02.14
코드로 소통하기 (깃허브 쓰는 방법)  (0) 2025.02.11
React 입문 개인과제  (0) 2025.01.21
ReactJS 입문  (0) 2025.01.20
모듈화 및 코드분리 가이드  (0) 2025.01.16