React를 공부하면서 Virtual Dom이 도대체 무엇일까?? 어떤 역할을 하는건지 궁금해서 정리해보았습니다.
DOM (Document Object Model)
웹페이지에 들어가있는 HTML elements 들을 트리 형태의 구조 표현한 것
DOM 조작
개발자들은 dom이 제공하는 api를 통해서 dom 구조에 접근해 원하는 elements의 구조와 스타일을 변경할 수 있음
ex) Javascript 같은 경우는 getElementById(), querySelector() 등과 같은 API를 통해서 dom구조 안에 있는 elements에 접근해서 원하는대로 내용, style, layout 등을 수정할 수 있음
Virtual DOM 가상돔 이란?
실제 DOM과 같은 내용을 담고 있는 복사본
이 복사본은 Javascript 객체 형태로 항상 메모리상에 저장되어있다.
왜 복사본을 만드는건가?!
react는 가상dom을 굉장히 똑똑하게 사용해서 실제dom를 조작하는데 걸리는 시간을 획기적으로 줄여줌
react는 항상 두개의 가상돔 객체를 가지고 있음
- 랜더링 이전 화면 구조를 나타내는 가상dom
- 랜더링 이후에 보이게될 화면 구조를 나타내는 가상dom
1. react는 state가 변경될 때마다 랜더링을 하기 때문에
랜더링이 될 상황에 놓일 때 마다 새로운 화면에 들어갈 내용이 담 가상dom을 생성 (실제 브라우저에 그려지기 이전!)
2. 랜더링 이전에 화면에 내용을 담고있는 첫번째 가상dom과 업데이트 이후의 내용을 담고있는 두번째 가상 dom 을
비교해서 정확히 어떤 부분이 바뀌었는지 효율적으로 비교하여 파악한다.
=> 이러한 과정을 react에서는 Diffing이라고 부름
Diffing통해서 변경된 elements들만 파악해서 업데이트 시켜주는데 이를 Reconciliation(재조정) 이라고 부름
react의 Reconciliation이 효율적인 이유는 Batch Update
Batch Update 는 변경된 elements들을 하나하나 적용하는게 아니라
변경된 내용을 한번에 받아와서 실제 dom에 한번에 적용하기 때문에 훨씬 빠름
'React' 카테고리의 다른 글
[React] 개발 환경 준비, 프로젝트 만들기 (React 가장 기본 단계) (0) | 2023.06.09 |
---|