[React] Rendering과 Virtual DOM

Rendering

렌더링 트리거

1) 첫 리액트 앱을 실행했을 때

 

2) 리액트 내부에서 state 변경이 발생했을 때

- 컴포넌트 내부 state가 변경됐을 때

- 컴포넌트에 새로운 props가 들어올 때

- 상위 부모 컴포넌트에서 위의 두 이유로 렌더링이 발생했을 때

 

리렌더링

- 컴포넌트 상태에 변화가 생길 때 발생

- 여러 상태가 변경됐다면 리액트는 큐 자료구조에 넣어 순서를 관리함

 

브라우저 렌더링

- 브라우저 렌더링과 리액트 렌더링은 서로 다른, 독립적인 프로세스

- 렌더링이 완료되고 React가 DOM을 업데이트 → 브라우저 렌더링 (or 페인팅)

 

브라우저 렌더링 (페인팅) 원리

React, Vue.js는 가상돔(Virtual DOM)을 이용해 원하는 화면을 브라우저에 그려준다.

 

Virtual DOM 생성

리액트는 항상 두가지 버전의 가상DOM을 갖고있다.

1) 화면이 갱신되기 전 구조를 담고있는 가상 DOM 객체

2) 화면 갱신 후 보여야 할 가상 DOM 객체 → state가 변경됐을 때 리렌더링하기 위해 가상돔 생성

 

Diffing

state가 변경되면 생성된 가상돔과 이미 갖고있던 가상돔을 비교해 어떤 부분에서 변화가 일어났는지 빠르게 파악

 

Reconciliation (재조정)

파악이 끝났다면 변경이 일어난 부분만 실제 DOM에 적용

* Batch Update: 변경 사항들을 DOM에 하나하나 적용시키는 것이 아니라 모두 모아 한번에 적용시킴

'React' 카테고리의 다른 글

[React] styled-component  (0) 2024.08.16
[React] 리액트의 개념과 성능 최적화 팁  (0) 2024.08.14
[React] state  (0) 2024.08.08
[React] props와 children  (0) 2024.08.08
React 프로젝트 생성/구조  (0) 2024.08.08