React fiber는 스택구조와 다르다
나중에 들어간 Fiber노드를 가장먼저 꺼낼 필요가 없음
들어간 순서와 무관하게 꺼낼 수 있음
React가 fiber구조를 선택한 이유
렌더링 할 때의 순서를 유연하게 가져갈 수 없음
변화가 16버전부터임 원래는 스택구조였으나 fiber아키텍처를 사용
React 패키지의 구성요소들 & 용어정의
react 코어
renderer
event(legacy-events)
SyntheticEvent – React
A JavaScript library for building user interfaces
legacy.reactjs.org
기존 웹의 이벤트 시스템을 wrappping해서 추가적 이벤트 시스템을 개발함
scheduler
task단위로 작업 수행 비동기로 수행
task 실행타이밍을 알고 있는 패키지
스케줄링 담당
reconciler
fiber architecture의 VDOM재조정 담당
컴포넌트 호출
VOM의 구조
fiber node로 구성된 tree형태, 더블 버퍼링 구조 를 가지고 있음
current tree
Root Node와 연결되어있음 현재 돔과 동일한 형태
workInProgress tree
render phase에서 작업중인 fiber
작업중인 트리 current tree를 자기복제 해서 만들어짐
alternate이라는 키를 가지고 있는데 그 value로 workInProgress가 있다.
render phase -> commit phase를 지나면서 workInProgress tree는 current tree가 됨
root node와 current트리의 연결에서 workInProgress로 연결하여 current tree로 되고
workInProgress는 current tree를 복제해서 만들어 짐
더블 버퍼링 구조
current tree와 workInProgress tree를 같은 것을 두번 가지고 있는 구조
왜? 유연하게 삭제 및 수정을 하고 순서를 유연하게 가져가기 위한 구조
렌더링
컴포넌트렌더링 -> 호출 -> react return fiber node를 vdom에 반영과정까지
돔에 마운트 -> 돔을 브라우저에 페인트 렌더링 x
React life cycle
-render phase
VDOM재조정
WORK 패키지 : 리컨실러 컴포넌트 변경 돔에 적용하기 위해 수행하는 단계
스케줄러에 work를 등록
리컨실러 아키텍처가 stack -> fiber 렌더링 우선순위 변경 가능
-commit phase
VDOM을 DOM에 적용 . lifecycle에 실행하는 단계
sync실행
리액트가 콜스택을 비워준 다음 브라우저가 paint시작
'TIL' 카테고리의 다른 글
코어자바스크립트 chapter 4 예상 질문 정리 (0) | 2024.05.27 |
---|---|
코어자바스크립트 chapter 3 (0) | 2024.05.26 |
TIL SSH를 이용한 git repo 생성 (0) | 2024.01.21 |
transpiler와 compiler의 차이 (0) | 2023.12.31 |
Jest with Webpack (1) | 2023.12.27 |