인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

최상협님의 프로필 이미지

작성한 질문수

실무 중심! FE 입문자를 위한 React

4-2. React 렌더링 과정

4.2 React 렌더링 과정 에서 왜 컴포넌트가 두 번씩 호출될까요?

작성

·

81

·

수정됨

0

/*FunctionalComponent.jsx파일*/
import {useEffect,useState} from 'react';

function FunctionalComponent() {
    console.log('Function Beginning');
    const [value, setValue] = useState(0);

    useEffect(() => {
        console.log('Function useEffect[]');

        return () => {
            console.log('Function useEffect return[]');
        }
    },[]);

    useEffect(() => {
        console.log('Function useEffect[value]');

        return () => {
            console.log('Function useEffect return[value]');
        }
    },[value]);

    console.log('Function End');

    return (
        <div>
            <h1>!FunctionalComponent</h1>
            <h1>value: {value}</h1>
            <button onClick={() => {
                setValue((state) => state + 1)
            }}
            >
                Increase value
            </button>
        </div>
    );
}

export default FunctionalComponent
image.png


/*App.jsx파일*/
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg'
import './App.css'
import axios from 'axios';
import FunctionalComponent from './practice/FunctionalComponent'
function App() {

  return (
    <FunctionalComponent />
  )
}

export default App

 

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

최상협님, React에서 FunctionalComponent가 두 번씩 호출되는 이유는 주로 개발 환경에서 React의 “Strict Mode”로 인한 것입니다. 이 모드는 일부 사이드 이펙트를 감지하고 방지하기 위해 렌더링을 두 번 실행하여 발생할 수 있는 문제를 진단하는 역할을 합니다. 실제로 사용자에게는 한 번만 렌더링됩니다.

React 18 버전부터는 React.StrictMode가 기본적으로 development 모드에서 활성화되어 있는데, 이 환경에서는 상태 및 라이프사이클 메서드의 불변성을 보장하기 위해 의도적으로 컴포넌트를 두 번씩 렌더링합니다.

실제로 배포될 때는 이러한 방식으로 동작하지 않으니, 예상치 못한 문제가 발생하더라도 우려할 필요는 없습니다. Strict Mode의 본래 목적은 잠재적인 문제를 조기에 발견하여 코드의 안정성을 높이는 것입니다.

만약 두 번 호출되는 것을 피하고자 한다면, <React.StrictMode>를 제거하여 확인할 수 있지만 이는 개발 환경에서만 권장됩니다.

React의 공식 문서에서도 이에 대해 자세히 설명하고 있으니, 부가적인 정보를 원하시면 확인해 보세요. React Strict Mode 공식 문서에서 확인하실 수 있습니다.

더 궁금한 점이 있다면 언제든지 문의주세요!