본문 바로가기
IT/React

리액트 컴포넌트가 렌더링되는 것과 useEffect가 실행되는것의 차이

by 골든크랩 2025. 3. 28.
728x90
반응형

컴포넌트가 렌더링되는 것과 가 실행되는 것은 서로 다른 개념입니다. 

두 개념은 독립적이지만, 종종 함께 발생하기 때문에 혼동될 수 있습니다. 하나씩 분리해서 살펴볼게요.

컴포넌트 렌더링:
컴포넌트가 렌더링된다는 것은 React가 해당 컴포넌트의 UI를 다시 계산하고 그 결과를 DOM에 반영하는 과정을 의미합니다. 렌더링은 다음의 상황에서 발생합니다:

 

1. 초기 렌더링: 컴포넌트가 처음 화면에 나타날 때.

2. 상태(state) 또는 속성(props) 변경: 컴포넌트의 상태나 부모로부터 전달된 속성이 변경되었을 때.

3. 부모 컴포넌트의 리렌더링: 부모가 리렌더링되면 자식도 리렌더링될 수 있습니다.

useEffect 의 실행:
useEffect 는 컴포넌트의 렌더링 결과와 관계없이, 특정 의존성 배열에 따라 추가적인 작업을 수행하도록 설정된 메서드입니다. 주요 특징은 다음과 같습니다:

1. 초기 렌더링 후 실행: 의존성 배열이 없거나 로 설정되어 있으면 컴포넌트가 처음 렌더링된 이후에 한 번 실행됩니다.

2. 의존성 변경에 따라 실행: 의존성 배열에 포함된 값이 변경될 때 실행됩니다.

3. 렌더링과 별개로 비동기 작업 처리 가능: DOM 업데이트 이후 또는 외부 API 호출 같은 작업에 적합합니다.


중요한 차이점:

1. 렌더링은 UI에 관련된 작업이고, useEffect 는 렌더링 이후 발생하는 추가 작업을 처리합니다.

2. 렌더링은 컴포넌트의 상태나 속성이 변경될 때마다 발생할 수 있지만, 는 의존성 배열에 따라 실행 여부가 결정됩니다.

3. 렌더링은 동기적으로 DOM에 즉각 반영되는 반면, useEffect 는 비동기적으로 실행되며 컴포넌트의 렌더링 흐름을 방해하지 않습니다.


예시로 정리:

--------------------------------------------------------------------------------------------------------------------

import React, { useState, useEffect } from 'react';

const Example = () => {
  const [count, setCount] = useState(0);

  console.log('렌더링 발생'); // 컴포넌트 렌더링 시 실행

  useEffect(() => {
    console.log('useEffect 실행'); // 의존성 배열에 따라 실행
  }, [count]); // count가 변경될 때만 실행

  return (
    <button onClick={() => setCount(count + 1)}>
      클릭: {count}
    </button>
  );
};
--------------------------------------------------------------------------------------------------------------------
1. 렌더링 로그는 로 상태가 변경될 때마다 발생합니다.

2.  useEffect로그는 count 가 변경된 경우에만 실행됩니다.

요약하자면, 렌더링은 컴포넌트의 UI 업데이트 과정이고, 는 렌더링 이후 필요한 추가 작업을 처리하는 데 사용됩니다. 이 두 개념을 잘 활용하면 성능 최적화와 효과적인 상태 관리를 할 수 있죠! 😊

728x90
반응형

댓글