[React] 컴포넌트가 두 번씩 호출될 때 - React StrictMode

2025. 1. 30. 10:05·Frontend/React

React에서 제공하는 StrictMode는 애플리케이션에서 발생할 수 있는 문제를 자체적으로 검사하는 기능입니다.

 

StrictMode를 활성화 하면, React는 의도적으로 컴포넌트를 두 번씩 렌더링하여 발생할 수 있는 side effect를 확인합니다.

 

 

React는 렌더링과 커밋 두 단계로 동작합니다.

 

  • 렌더링 단계에서는 DOM과 같은 특정 환경에 어떤 변화가 일어나야 하는 지 결정합니다. 이 때 React는 이전 렌더와 현재 렌더의 결과값을 비교합니다.
  • 커밋 단계는 위의 변경 사항을 실제로 반영하는 단계입니다.

 

일반적으로 커밋단계는 렌더링 단계보다 훨씬 빠릅니다. 때문에 렌더링 단계가 병목이 되어 브라우저가 멈출 수 있는데, 이를 위해 렌더링 단계를 작은 단위로 나누어 각 단계를 중지했다가 재개하는 방식을 사용합니다.

 

이 때문에 React는 커밋 단계가 진행되기 이전에 렌더링 단계에서 같은 생명주기 메서드들을 여러번 호출할 수도 있습니다.

  • constructor( )
  • componentWillMount ( )  (or UNSAFE_componentWillMount ( ) )
  • componentWillReceiveProps ( )  (or UNSAFE_componentWillReceiveProps ( ) )
  • componentWillUpdate ( )  (or UNSAFE_componentWillUpdate ( ) )
  • getDerivedStateFromProps ( )
  • shouldComponentUpdate ( )
  • render ( )
  • setState ( )  업데이트 함수 (첫 번째 인자)

 

이로 인해 발생할 수 있는 문제를 더 쉽게 찾게 하기 위해 StrictMode는 아래 함수들을 의도적으로 두 번 호출하게 됩니다.

  • constructure( ), render( ), shouldComponenetUpdate( )
  • getDerivedStateFromProps( )
  • 함수의 컴포넌트 바디
  • setState의 첫 번째 인자
  • useState, useMemo, useReducer로 호출하는 함수

 

※ StrictMode는 개발 모드에서만 활성화되기 때문에, 실제 빌드한 파일에는 영향을 주지 않습니다!

 

더 자세한 정보는 아래 공식 문서에서 확인할 수 있습니다.

https://ko.legacy.reactjs.org/docs/strict-mode.html

 

Strict 모드 – React

A JavaScript library for building user interfaces

ko.legacy.reactjs.org

 

728x90

'Frontend > React' 카테고리의 다른 글

[React] React 프로젝트 빌드하기  (0) 2024.06.17
[React] Syntax | 03. State와 반응성  (0) 2024.06.10
[React] Syntax | 02. children prop  (0) 2024.06.10
[React] Syntax | 01. Component  (0) 2024.06.10
[React] Chrome에서 React 개발자 도구 설치하기  (0) 2024.05.19
'Frontend/React' 카테고리의 다른 글
  • [React] React 프로젝트 빌드하기
  • [React] Syntax | 03. State와 반응성
  • [React] Syntax | 02. children prop
  • [React] Syntax | 01. Component
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (262) N
      • CS (40)
        • ML (3)
        • CV (2)
        • PS (34)
      • Reveiw (17)
        • Paper (17)
        • Github (0)
      • Pytorch (5)
      • Language (58)
        • Python (7)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (71) N
        • React (8)
        • SolidJS (20)
        • CSS (12) N
      • UI (3)
      • Backend (15)
        • DB (17)
        • Node.js (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DB
    html
    CS
    frontend
    GAN
    Express
    mongo
    react
    review
    backend
    API
    ps
    Three
    CSS
    PyTorch
    Git
    CV
    python
    figma
    nodejs
    SOLID
    UI
    ts
    PRISMA
    C++
    ML
    vscode
    js
    postgresql
    deploy
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[React] 컴포넌트가 두 번씩 호출될 때 - React StrictMode
상단으로

티스토리툴바