Strict Mode

개발 환경에서 잠재적인 문제를 찾아주는 React의 검사 도구입니다. 실제 UI를 렌더링하지 않고, 경고만 출력합니다.

사용법

import { StrictMode } from 'react';

root.render(
  <StrictMode>
    <App />
  </StrictMode>
);

왜 필요한가?

주요 검사 항목

검사설명
이중 렌더링컴포넌트를 두 번 렌더링해서 부작용 감지
이중 Effect 실행useEffect를 두 번 실행해서 cleanup 확인
deprecated API 경고findDOMNode, 레거시 context 등
ref 콜백 검사ref 콜백의 cleanup 함수 확인

이중 렌더링이 중요한 이유

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

  // 잘못된 예: 렌더링 중 외부 상태 변경
  let external = 0;
  external++;  // StrictMode에서 두 번 실행되어 문제 발견

  console.log('렌더링');  // 개발 모드에서 두 번 출력됨

  return <div>{count}</div>;
}

useEffect 이중 실행

useEffect(() => {
  const connection = createConnection();
  connection.connect();

  // cleanup이 없으면 StrictMode에서 연결이 두 번 생김
  return () => connection.disconnect();  // cleanup 필수!
}, []);

특징

흔한 오해

"useEffect가 두 번 실행돼요!"
→ StrictMode 때문. 정상 동작.
→ 프로덕션에서는 한 번만 실행됨.
→ cleanup을 제대로 작성했는지 확인하라는 신호.

CSLOG에서 보기