학습 공간 개념 · 판단 · 실험

Frontend Performance Lab

React

React 렌더링: 화면이 바뀌는 과정

React는 다음 화면의 모습을 계산한 뒤, 필요한 부분을 브라우저의 DOM에 반영합니다.

이럴 때 필요해요

컴포넌트가 다시 실행됐다는 로그와 실제 화면 변경을 구분하면, 중복 실행이나 화면 갱신 문제를 더 정확하게 찾을 수 있습니다.

어떻게 동작하나요?

다음 화면의 모습 계산하기

상품 수량이 0에서 1로 바뀌면 화면의 글자도 바뀌어야 합니다. React 컴포넌트는 props와 state를 읽어 “지금은 어떤 화면이어야 하는가”를 계산합니다. JSX는 그 화면의 모습을 적는 문법입니다. HTML 문자열을 직접 붙여 넣는 것은 아닙니다.

계산과 DOM 반영 구분하기

React가 컴포넌트를 호출해 다음 화면의 모습을 계산하는 단계를 렌더(Render)라고 합니다. 계산이 끝나면 기존 화면과 비교해 필요한 변경을 브라우저의 DOM에 적용합니다. 이 단계를 커밋(Commit)이라고 합니다. 같은 모습을 계산했다면 컴포넌트가 다시 실행돼도 DOM은 바뀌지 않을 수 있습니다.

이름을 바꾸면 어떤 일이 생길까요?

아래 Greeting은 이름을 받아 인사말의 모습을 반환합니다. 이름이 수진에서 지수로 바뀌면 React는 새 인사말을 계산한 뒤 필요한 글자를 DOM에 반영합니다. DOM 반영 이후 브라우저가 화면을 그리는 과정은 페인트(Paint)이며 별도 단계입니다.

코드 예제

동작을 설명하는 읽기 전용 예제입니다.

example.jsx
function Greeting({ name }) {
  return <h1>안녕하세요, {name}</h1>;
}
// 부모 컴포넌트의 화면 안에서 사용
<Greeting name="수진" />
jsx · 읽기 전용5줄

Greeting은 이름으로 인사말을 계산하는 컴포넌트입니다. 위 선언을 읽는 것만으로 DOM이 생기지는 않습니다. React가 화면 안에서 컴포넌트를 렌더하고 결과를 커밋해야 브라우저에 반영됩니다.

심화 원리와 적용 범위

화면 계산에서 지켜야 할 것

화면 계산은 다시 시도되거나 결과가 버려질 수도 있으므로 렌더 중에는 통신 요청이나 전역 변수 변경 같은 외부 작업을 하지 않습니다. 이처럼 같은 입력으로 같은 결과를 계산하는 성질을 순수성이라고 합니다. 화면의 모습을 메모리에 표현하는 것을 흔히 가상 DOM이라 부르지만 직접 DOM을 바꾸는 방법보다 항상 빠르다는 뜻은 아닙니다.

자주 헷갈리는 포인트

  • 렌더 로그가 두 번 찍혔다고 해서 실제 DOM이 두 번 변경되었다고 결론 내리지 않습니다.
  • 렌더 본문 안에서 API 변경 요청이나 전역 변수 변경 같은 외부 부작용을 실행하지 않습니다.

내 말로 설명해 보기

같은 UI를 반환한 재렌더에서 실제 DOM 변경이 없을 수 있는 이유는 무엇인가요?

생각할 단서 화면 계산과 DOM 변경을 별도 단계로 나눠 설명해 보세요.

예시 답변 확인

설명에 들어갈 핵심

  • 렌더는 다음 화면을 계산하는 단계입니다.
  • 커밋 단계에서 실제로 필요한 DOM 변경만 적용합니다.
  • 이전과 같은 출력이라면 DOM 변경이 없을 수 있습니다.

예시 답변

컴포넌트가 다시 실행되어도 이전과 같은 화면을 계산할 수 있습니다. React가 커밋 단계에서 실제로 바꿀 DOM이 없다고 판단하면 DOM 변경은 없습니다. 렌더 로그 수를 DOM 변경 횟수로 읽으면 안 됩니다.

문장을 그대로 외우기보다 예제의 값과 실행 흐름을 떠올리며 설명해 보세요.

함께 읽으면 좋은 개념

관련 면접 질문 7개

React는 어떤 문제를 해결하는 라이브러리인가요?

React는 컴포넌트 단위로 UI를 조합하고 상태 변화에 따른 화면 갱신을 선언적으로 처리하는 라이브러리입니다. 개발자가 현재 props와 state에 맞는 화면 구조만 선언하면, React가 이전 결과와 비교해 필요한 DOM 변경만 반영해 수동 DOM 조작 부담을 줄여 줍니다. 다만 라우팅이나 서버 캐시, 빌드 정책까지 강제하는 풀스택 프레임워크는 아니므로 서비스 요구에 맞춰 도구와 프레임워크를 함께 선택합니다.

꼬리질문과 참고자료 →

React의 동작 원리와 장단점은 무엇인가요?

React는 입력으로부터 다음 UI 트리를 계산하는 렌더 단계와 계산된 변경분을 실제 DOM에 반영하는 커밋 단계를 분리해 동작합니다. 선언적 컴포넌트 모델과 단방향 데이터 흐름 덕분에 복잡한 화면에서도 상태 변화의 원인을 추적하기 쉽다는 장점이 있습니다. 반면 상태 소유권과 Effect 경계, 번들 및 렌더링 비용을 직접 설계해야 하며 생태계 조합에 따른 학습과 유지보수 비용이 따릅니다.

꼬리질문과 참고자료 →

가상 DOM은 무엇을 뜻하나요?

가상 DOM은 실제 브라우저 DOM을 직접 수정하기 전에, 원하는 UI 구조를 메모리상의 가벼운 JavaScript 객체 트리로 표현하는 방식입니다. React 엘리먼트는 특정 시점의 화면 설명서일 뿐 실제 DOM 노드가 아니며, React는 이전 설명서와 새 설명서를 비교해 필요한 변경만 커밋 단계에서 적용합니다. 따라서 가상 DOM을 브라우저 엔진의 복제판이나 무조건적인 속도 보장 장치로 보기보다 선언적 UI를 가능하게 하는 표현 계층으로 이해해야 합니다.

꼬리질문과 참고자료 →
나머지 질문 4개

공식 참고 자료

← React