컴포넌트가 렌더링되는 것과 가 실행되는 것은 서로 다른 개념입니다.
두 개념은 독립적이지만, 종종 함께 발생하기 때문에 혼동될 수 있습니다. 하나씩 분리해서 살펴볼게요.
컴포넌트 렌더링:
컴포넌트가 렌더링된다는 것은 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 업데이트 과정이고, 는 렌더링 이후 필요한 추가 작업을 처리하는 데 사용됩니다. 이 두 개념을 잘 활용하면 성능 최적화와 효과적인 상태 관리를 할 수 있죠! 😊
'IT > React' 카테고리의 다른 글
리액트에서 props 로 받은 변수는 복사본인가? 아니면 참조인가? (0) | 2025.03.26 |
---|---|
리액트 HTML에 이벤트 핸들러를 화살표 함수 형태로 작성해야 하는 이유.(이벤트 핸들러 동작시점) (0) | 2025.03.26 |
React 상태관리 라이브러리 zustand (0) | 2025.03.26 |
React 배포 과정 (0) | 2025.03.24 |
2025년 기술 스택가이드 (0) | 2025.03.22 |
댓글