그럼에도 불구하고

👨‍💻

[React] 리액트 렌더링 두 번 방지하는 법 본문

React/React basics

[React] 리액트 렌더링 두 번 방지하는 법

zenghyun 2023. 7. 25. 09:25

리엑트 렌더링이 두 번 되는 경우 이를 방지하는 법에 대해 알아보겠습니다.

 

 

🧑🏻‍💻 React Strict Mode 

렌더링이 두 번 발생하는 이유는 React.StrictMode 때문입니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'
import { Provider } from 'react-redux'
import store from './app/store.ts'
 
ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <Provider store={store}>
    <App />
    </Provider>
  </React.StrictMode>,
)
 
cs

 

따라서 React.StrictMode Wrapper를 제거해 주면 컴포넌트가 두 번씩 호출되지 않습니다.

 

📌 존재 이유

StrictMode는 애플리케이션 내의 잠재적인 문제를 알아내기 위한 도구입니다.

Frament와 같이 UI를 렌더링 하지 않고, 자식들에 대한 부가적인 검사와 경고를 활성화합니다.

 

Strict 모드는 개발 모드에서만 활성화되기 때문에, 프로덕션 빌드에는 영향을 끼치지 않습니다.

 

React 공식 문서에 따르면 StrictMode는 아래와 같은 부분에서 도움이 됩니다.

  • 안전하지 않은 생명주기를 사용하는 컴포넌트 발견
  • 레거시 문자열 ref 사용에 대한 경고
  • 권장되지 않는 findDOMNode 사용에 대한 경고
  • 예상치 못한 부작용 검사
  • 레거시 context API 검사

🏷️ ref

https://ko.legacy.reactjs.org/docs/strict-mode.html#gatsby-focus-wrapper

Comments