0Pricing
React Academy · 강의

StrictMode의 역할

개발 환경에서의 이중 호출과 더 이상 사용되지 않는 API 경고를 이해합니다.

StrictMode의 역할은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

이 레슨에서는 개발 환경에서 React의 StrictMode가 어떤 역할을 하는지, 어떤 경고를 표시하는지, 더 안전한 React 코드를 작성하는 데 어떻게 도움이 되는지 배웁니다.

StrictMode란 무엇인가요

StrictMode는 트리의 일부를 감싸고 **개발 환경에서만** 추가 검사를 활성화하는 특수한 React 컴포넌트입니다. 프로덕션 빌드에는 전혀 영향을 주지 않습니다.
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>
);

수명 주기 이중 호출

StrictMode에서 React는 개발 환경의 컴포넌트 함수와 일부 수명 주기 메서드를 의도적으로 **두 번** 호출합니다. 이는 제대로 정리되지 않은 부작용을 드러내기 위한 것입니다.

왜 두 번 호출하나요

React 18 이상에서는 앞으로 컴포넌트를 다시 마운트할 수 있습니다(예: 빠른 새로 고침이나 오프스크린 API를 사용할 때). 개발 환경에서 두 번 호출하면 이러한 상황을 시뮬레이션할 수 있으므로, 누적되는 구독이나 두 번 실행되는 DOM 변경 같은 버그를 미리 발견할 수 있습니다.

이펙트 마운트–마운트 해제–재마운트

React 18의 StrictMode에서는 최초 마운트 시 모든 useEffect가 실행되고 정리된 후 다시 실행됩니다. 정리 함수가 올바르면 이중 실행은 문제가 되지 않습니다. 앱이 중단된다면 정리 함수가 없거나 잘못된 것입니다.
useEffect(() => {
  const id = setInterval(() => setTick(t => t + 1), 1000);
  return () => clearInterval(id); // cleanup required!
}, []);

사용 중단된 API 감지

코드에서 `componentWillMount`, `componentWillReceiveProps`, 문자열 참조와 같은 사용 중단된 React API를 사용하면 StrictMode가 경고합니다. 이러한 경고는 브라우저 콘솔에 노란색 경고로 표시됩니다.

레거시 컨텍스트 API 경고

타사 라이브러리가 레거시 컨텍스트 API(`childContextTypes` / `getChildContext`)를 사용하면 StrictMode가 경고합니다. 이는 해당 라이브러리를 최신 `React.createContext` API로 업데이트해야 한다는 뜻입니다.

기존 앱에서 안전하게 활성화하기

기존 앱에서 컴포넌트 트리의 일부만 StrictMode로 감싸 점진적으로 활성화할 수 있습니다. 새 영역부터 시작하고 경고를 해결하면서 범위를 넓히십시오.
function App() {
  return (
    <>
      <LegacyPart />  {/* not wrapped */}
      <StrictMode>
        <NewFeature />
      </StrictMode>
    </>
  );
}

시각적 차이 없음

StrictMode는 눈에 보이는 UI를 렌더링하지 않습니다. 순수한 개발 도구입니다. DOM에 추가 요소가 표시되지 않고 콘솔 경고와 이중 호출 동작만 추가로 나타납니다.

첫날부터 활성화하기

가장 좋은 방법은 프로젝트를 시작할 때부터 StrictMode를 활성화하는 것입니다. 이중 호출 문제를 초기에 해결하는 편이 코드베이스가 커진 뒤 발견하는 것보다 훨씬 비용이 적게 듭니다.

빠른 확인

React StrictMode가 컴포넌트 함수를 두 번 호출하는 목적은 무엇인가요?

복습

StrictMode는 비용이 들지 않는 개발 도구로, 렌더링과 이펙트를 두 번 호출해 순수하지 않은 코드를 찾고, 사용 중단된 API를 경고하며, 향후 React 기능에 대비하도록 앱을 준비합니다.

다음 학습

다음 레슨: **순수 컴포넌트 및 렌더링 중 부작용 방지** — 변경과 외부 읽기가 없는 렌더링 함수를 작성하는 방법을 배웁니다.

자주 묻는 질문

“StrictMode의 역할” 강의는 무료인가요?

네 — “StrictMode의 역할” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“StrictMode의 역할”에서 뭘 배우나요?

개발 환경에서의 이중 호출과 더 이상 사용되지 않는 API 경고를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

React Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“StrictMode의 역할” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. StrictMode의 역할
  2. 순수 구성 요소 및 렌더링 부작용 피하기
  3. Key 및 Ref 모범 사례
  4. 폴더 구조 및 이름 지정 규칙
← React Academy(으)로 돌아가기