원티드 프리온보딩 프론트엔드 챌린지 4월 - 리액트 해부학
[Week 1-1] React가 VirtualDOM을 활용하는 방법
VirtualDOM, Reconciliation, Fiber
- createRoot()과 render()의 역할
- React가 Reconciliation을 통해 화면을 그리는 방법
- Fiber Reconciler의 rendering효율 개선
- [아하!모먼트] 면접에 대비하는 주니어 프론트엔드 개발자를 위해
Tips
vite
- 웹팩을 대체하는 번들러 (컴파일러 툴)
- 빌드가 매우 빠르다
1. 최적화된 업데이트
화면 중 일부만 렌더링하면 되는 경우 : VirtualDOM에서 미리 적용해보고 변경된 부분만 렌더링
2. 텍스트에 비해 애니메이션이 더 빠른 업데이트 필요 (작업 부피가 크므로. 초당 20프레임...)
<div id=root />
를 나타내는 node)를 생성
- [실제 DOM] root element에 이벤트 모두 위임
- [VirtualDOM] HostRoot에 이벤트 모두 위임
root.current
: VirtualDOM의 HostRootcontainer
: 실제 DOM의 root node (div 엘리먼트)
<div />
등...)Render phase
: virtualDOM에 미리 그려보는 작업Commit phase
: 실제 브라우저에 띄우는 작업
- render 과정을 3단계로 나눈 것
1) 렌더 시작 (주방에 주문 전달)
2) 컴포넌트 렌더 (주방에서 요리)
3) DOM에 commit (손님 테이블에 놓아줌)
- trigger : 최초 렌더링, setState 등으로 상태 변했을 때 등 rendering을 일으키는 계기
- DFS 방식으로 탐색/작업
- 계속해서 node들이 각 단계를 거치며 작업
- tag 숫자는 임의로 지정해놓은 것.
tag : 3
이 root node
- WIP 큐에서 작업한 것을 브라우저(Current)에 어떻게 보내줄까?(commit을 어떻게 할까?)
👉🏽 Current가 가리키는 포인터가 바뀌는 것. WIP의 root node가 그대로 Current의 root node가 됨.
- WIP : 업데이트 사항이 반영되는 중인 DOM tree (다음 렌더링에 사용될 트리)
<></>
)도 탐색에 포함되니까 자제하자..