React Hooks 완벽 가이드
- 코알라 개발자
- React , JavaScript
- 15 Feb, 2025
React Hooks란?
React Hooks는 함수형 컴포넌트에서 상태와 라이프사이클 기능을 “갈고리처럼” 끌어올려 사용할 수 있게 해주는 기능입니다.
가장 중요한 Hooks
useState - 상태 관리
함수형 컴포넌트에서 상태를 관리하는 가장 기본적인 Hook입니다.
import { useState } from 'react';
export function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>클릭 횟수: {count}</p>
<button onClick={() => setCount(count + 1)}>
증가
</button>
</div>
);
}
useEffect - 부수 효과 처리
컴포넌트가 마운트, 업데이트, 언마운트될 때 특정 작업을 수행합니다.
import { useEffect, useState } from 'react';
export function DataFetcher() {
const [data, setData] = useState(null);
useEffect(() => {
// 컴포넌트 마운트 시 실행
fetch('/api/data')
.then(res => res.json())
.then(data => setData(data));
// 정리 함수 (언마운트 시 실행)
return () => {
console.log('정리 작업');
};
}, []); // 의존성 배열
return <div>{data && <p>{data.title}</p>}</div>;
}
useContext - 전역 상태 관리
Props Drilling을 피하고 전역 상태를 공유합니다.
import { createContext, useContext } from 'react';
const ThemeContext = createContext();
export function useTheme() {
return useContext(ThemeContext);
}
export function ThemeProvider({ children }) {
const [theme, setTheme] = useState('light');
return (
<ThemeContext.Provider value={{ theme, setTheme }}>
{children}
</ThemeContext.Provider>
);
}
Hook 규칙
⚠️ 반드시 지켜야 할 규칙들:
- Top Level에서만 호출 - 반복문, 조건문 내에서 사용 금지
- React 함수에서만 - 일반 JavaScript 함수에서 사용 불가
- 순서 유지 - Hook의 호출 순서가 항상 같아야 함
커스텀 Hook 만들기
반복되는 로직을 커스텀 Hook으로 추출하세요.
function useLocalStorage(key, initialValue) {
const [storedValue, setStoredValue] = useState(() => {
try {
const item = window.localStorage.getItem(key);
return item ? JSON.parse(item) : initialValue;
} catch (error) {
console.log(error);
return initialValue;
}
});
const setValue = (value) => {
try {
setStoredValue(value);
window.localStorage.setItem(key, JSON.stringify(value));
} catch (error) {
console.log(error);
}
};
return [storedValue, setValue];
}
더 배우기
React Hooks를 마스터하면 더욱 강력하고 재사용 가능한 컴포넌트를 만들 수 있습니다!