TechFeedTechFeed
프레임워크난이도 보통컴포넌트 단위(점진적)

React 클래스 컴포넌트에서 훅으로 마이그레이션

클래스 컴포넌트함수형 + 훅
요약: this.state는 useState로, 생명주기 메서드는 useEffect로, 인스턴스 변수·ref는 useRef로 옮깁니다. 컴포넌트 단위로 점진 전환할 수 있습니다.

왜 옮기나

  • 훅은 로직 재사용(커스텀 훅)이 쉽고 this 바인딩 문제가 없습니다.
  • 신규 React 기능·생태계가 함수형 컴포넌트 중심으로 발전합니다.
  • 생명주기 분산 로직을 관심사별 useEffect로 묶을 수 있습니다.

전제 — 현재 상태

class extends React.Component, this.state/setState, componentDidMount 등 생명주기.

마이그레이션 단계

1
함수형으로 골격 전환

class를 function 컴포넌트로 바꾸고 render의 반환부를 그대로 옮깁니다.

function MyComp(props) {
  // ...
  return <div>...</div>
}
2
state를 useState로

this.state 각 필드를 useState로 분리하고 this.setState 호출을 setter로 교체합니다.

const [count, setCount] = useState(0)
// this.setState({count: count+1}) → setCount(count + 1)
3
생명주기를 useEffect로

componentDidMount는 useEffect(fn, []), update는 의존성 배열, unmount는 cleanup 반환으로 표현합니다.

useEffect(() => {
  const id = subscribe()
  return () => unsubscribe(id) // componentWillUnmount
}, [])
4
ref·인스턴스 변수

createRef는 useRef로, 렌더 간 유지되는 인스턴스 변수도 useRef로 대체합니다.

const inputRef = useRef(null)

⚠️ 막히는 케이스 · 함정

  • useEffect 의존성 배열을 빠뜨리면 stale closure(옛 값 참조) 버그가 납니다 — 린트 규칙(exhaustive-deps)을 켜세요.
  • setState 콜백(두 번째 인자) 패턴은 useEffect로 옮겨야 합니다.
  • getDerivedStateFromProps·shouldComponentUpdate는 useMemo/useEffect/React.memo로 재설계합니다.
✅ 검증: 전환 후 동작이 동일한지 확인하고, React DevTools로 불필요한 재렌더가 늘지 않았는지 점검합니다.
ReactHooks클래스컴포넌트useStateuseEffect

관련 가이드

React 상태 관리 비교 2026 — Zustand vs Jotai vs Redux Toolkit vs ValtioReact Compiler 1.0 실전 마이그레이션 가이드 — useMemo·useCallback 없는 React 개발Vercel AI SDK 6 완전 가이드 — 에이전트 1급 추상화, MCP 풀 지원, DevToolsClaude Code 가이드 #12 — Hooks로 워크플로우 자동화