UI의 이상적인 또는 가상적인 표현을 메모리에 저장하고, ReactDOM과 같은 라이브러리에 의해 "실제" DOM과 동기화하는 프로그래밍 개념
React elements
와 연관Shadow DOM과 Virtual DOM은 다르다
Shadow DOM
: 특정 DOM 요소에 완전한 캡슐화를 적용하길 원하거나 글로벌 스타일에 영향을 받지 않기를 원하는 경우, 원래의 DOM 트리에서 완전히 분리된 고유의 요소와 스타일을 가진 DOM 트리를 분리하여 사용할 수 있는 브라우저 기술 (attachShadow()
메서드 사용)Virtual DOM
: 브라우저 API 위에 있는 JavaScript 라이브러리에서 구현되는 개념💡
shadow dom
도 나중에 정리해 보면 재밌겠다
React v16에서 등장한, React의 핵심 알고리즘을 재구성한 새 재조정(Reconciliation) 엔진
✅ Fiber의 구조
컴포넌트와 컴포넌트의 입력과 출력에 대한 정보를 포함하는 JavaScript 객체
type
과 key
type
은 해당 구성 요소를 설명함key
는 fiber를 재사용할 수 있는지 여부를 판별하기 위해 type
과 함께 사용됨child
와 sibling
return
pendingProps
와 memoizedProps
pendingProps
는 함수의 실행 시작 시에 설정되고, memoizedProps
는 실행 끝에서 설정됨pendingProps
가 memoizedProps
와 같을 때, fiber는 이전 결과를 재사용할 수 있다!pendingWorkPriority
alternate
① flush
: fiber의 출력을 화면에 렌더링한다는 의미
② work-in-progress
: 아직 완료되지 않은 fiber는 아직 반환되지 않은 stack frame과 개념적으로 같다.
flush
와 work-in-progress
)alternate
는 work-in-progress
이고, work-in-progress
의 alternate
는 현재 fiber → ...????output
React가 변경해야 할 부분을 결정하기 위해, 한 트리를 다른 트리와 비교할 때 사용하는 알고리즘
key
prop을 통해 여러 렌더링 사이에서 어떤 자식 엘리먼트가 변경되지 않아야 할지 표시해 줄 수 있다.1. 엘리먼트의 타입이 다른 경우
2. DOM 엘리먼트의 타입이 같은 경우
3. 같은 타입의 컴포넌트 엘리먼트
어렵다 ...
DOM 헤깔려서 저 주니어때도 엄청 깨졋던 슬픈 기억이.. ㅠㅠ
백엔드 API 연동 방식이 요즘은 REST 방식이라는 것으로 거의 다 쓰는데..
옛날에는 (2013년 즈음) SOAP 방식 이라는 XML 형태로 되어있었던 흐...
부모의 트리에 하위의 자식의 어쩌구 후 ㅋㅋ 어려워요 ㅎㅎ