React Hooks 완벽 가이드
React Hooks는 함수형 컴포넌트에서 상태와 라이프사이클 기능을 사용할 수 있게 해주는 강력한 도구입니다.
useState - 상태 관리
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
Increment
</button>
</div>
);
}
useEffect - 사이드 이펙트
import { useState, useEffect } from 'react';
function UserProfile({ userId }) {
const [user, setUser] = useState(null);
useEffect(() => {
fetchUser(userId).then(setUser);
}, [userId]); // userId가 변경될 때만 실행
if (!user) return <div>Loading...</div>;
return <div>{user.name}</div>;
}
커스텀 훅
function useLocalStorage(key, initialValue) {
const [value, setValue] = useState(() => {
const saved = localStorage.getItem(key);
return saved ? JSON.parse(saved) : initialValue;
});
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue];
}
// 사용
function App() {
const [name, setName] = useLocalStorage('name', '');
// ...
}
주요 Hooks
- useState: 상태 관리
- useEffect: 사이드 이펙트
- useContext: Context API 사용
- useReducer: 복잡한 상태 로직
- useMemo: 값 메모이제이션
- useCallback: 함수 메모이제이션
- useRef: DOM 참조 또는 값 보관
Best Practices
- 훅은 최상위에서만 호출
- React 함수 내에서만 호출
- 의존성 배열 정확히 명시
- 커스텀 훅으로 로직 재사용
다음 학습 주제
- useReducer vs useState
- React Query로 서버 상태 관리
- 성능 최적화 패턴