React: 'Rendered more hooks than during the previous render' 훅 호출 순서 에러 해결법
3초 요약: 이렇게 고치세요 원인: React가 훅을 이름이 아니라 "호출된 순서"로 추적하는데, 조건문·조기 반환 때문에 렌더링마다 훅 호출 개수가 달라져서 발생 해결: 모든 훅 선언을 컴포넌트 최상단, 조기 반환(return)보다 위로 이동 / 조건은 훅 바깥이 아니라 훅 내부 로직으로 넣기 주의: 훅 자체를 if 로 감싸는 건 금지지만, 훅 내부에서 조건문을 쓰는 건 정상적으로 허용되는 패턴 useEffect(() => { if (isLoggedIn) analytics.logPage(); // 조건은 훅 안으로 }, [isLoggedIn]); ↓ 왜 이런 에러가 나는지 원리 보기 React 컴포넌트에서 조건에 따라 다른 화면을 먼저 보여주려고 조기 반환(early return)을 쓰다 보면 'Rendered more hooks than during the previous render' 에러를 만나는 경우가 있습니다. 이 에러가 왜 발생하는지, 그리고 훅 호출 규칙을 지키면서 문제를 해결하는 방법을 정리합니다. 왜 'Rendered more hooks' 에러가 발생하는가 이 에러의 근본적인 원인은 "리액트가 훅의 순서와 개수를 기억하는 방식"에 있습니다. 리액트 내부적으로 컴포넌트 내의 훅들을 상태 기억을 위해 링크드 리스트(Linked List) 구조로 관리합니다. 즉, 리액트는 훅을 고유한 이름이 아닌 "호출되는 순서"대로 매칭하여 값을 추적합니다. 조건문( if )이나 조기 반환( return )문 때문에 특정 렌더링에서 훅의 실행 순서가 뒤바뀌거나 누락되면, 리액트는 이전 상태와 매칭하는 데 실패하여 즉시 렌더링 크래시(컴파일 거부)를 발생시킵니다. 로딩 중일 때만 조기 return을 걸어두는 패...