본문 바로가기

React/이론공부

React의 가상돔 (Virtual DOM)

DOM (Document Object Model)

- HTML 파일 내용을 토대로 만들어지고, javascript 와 같은 스크립팅 언어로 수정할 수 있도록 만들어진 웹 페이지의 객체 지향 표현

- 브라우저가 화면을 그리기 위해서 필요한 정보가 트리 형태로 저장된 데이터입니다.

- DOM 은 동일한 문서를 표현하고, 저장하고, 조작하는 방법을 제공한다.

- DOM 은 DOM이 제공하는 API(getElementById, querySelector) 를 사용해 , 원하는 엘리먼트에 스타일, 구조 등을 조작할 수 있다.

- 웹 페이지는 일종의 문서(document) 로 이루어져있다. 이 문서는 웹 브라우저를 통해 문서가 해석되어 웹 브라우저 화면에 나타나거나 HTML 소스 자체로 나타나기도 한다.

출처 : 별코딩

 

가상 돔 (Virtual DOM)

- React 의 가상 돔은 실제 DOM과 같은 내용을 담고 있는 복사본

이 복사본은 자바스크립트 객체 형태로 메모리상에 저장되어있다.

- React 는 항상 두개의 가상돔을 갖고 있다.

첫 번째 가상돔 : 변경 이전의 내용을 담고 있음
두 번째 가상돔 : 변경 이후에 보여질 내용을 담고 있음

출처 : 별코딩

변경된 내용이 화면에 새롭게 그려지기 이전, 곧 실제 DOM이 변경되기 이전에 리액트는 두 개의 가상돔을 비교해서 어떤 부분이 바뀌었는지 효율적으로 비교하여 파악한다. 이러한 과정을 Diffing 이라고한다.

 

가상 돔 (Virtual DOM) 의 존재 이유

- 실제 DOM 에는 브라우저가 화면을 그리는데 필요한 모든 정보가 들어있어 실제 DOM을 조작하는 작업은 무겁다

- React 는 실제 DOM의 변경 사항을 빠르게 파악하고 반영하기 위해 내부적으로 가상 DOM을 만들어서 관리한다.

출처 : 별코딩

 

가상돔을 활용한 DOM 조작 과정

가상돔은 실제 DOM 과 다르게 DOM 을 조작하는 API 를 갖고 있지 않다.

- 리액트는 state가 변경될 때마다 새로 렌더링이 발생하는데, 리액트는 새로운 렌더링이 발생할 때마다 새로운 화면에 들어갈 내용이 담긴 가상 돔을 생성한다.

- 렌더링 이전 화면 구조를 나타내는 가상돔 (첫 번째 가상돔) 과 새로 생긴 가상돔 (두 번째 가상돔) 을 비교해서, 정확히 어디 엘리먼트가 바뀌었는지 파악한 다음 변경 된 부분만 실제 DOM 에 적용한다. 이러한 과정을 Reconciliation (재조정) 이라고 함.

출처 : 별코딩

 

React 의 재조정 과정 (Reconciliation)

- Batch Update 과정은 집단 업데이트 라는 의미인데, 변경 된 엘리먼트를 한번에 바뀐 모든 부분을 적용시킨다.

( 변경 된 모든 부분을 받아와서, 바로 적용시켜주기 때문에 비용절감에 효율적이다. )

출처 : 별코딩

 

'React > 이론공부' 카테고리의 다른 글

React forwardRef  (1) 2023.01.25
React.Fragment  (0) 2023.01.25
React.memo  (0) 2023.01.25
[React Hooks] useReducer  (0) 2023.01.25
[React Hooks] useCallback  (0) 2023.01.25