scheduleUpdateOnFiber(fiber, expirationTime, suspenseConfig):
작업을 스케줄링하고 우선순위를 결정
작업큐에 fiber 추가
expirationTime과 suspenseConfig를 사용하여 작업 우선순위 결정
작업큐를 정렬하여 가장 높은 우선순위의 작업을 선택
...
workLoopConcurrent():
while 작업이 남아있음:
현재 작업을 가져옴
performUnitOfWork(현재 작업)을 호출하여 작업 수행
브라우저가 렌더링할 시간이 남아있는지 확인
시간이 남아있지 않다면 작업 루프를 중단
performUnitOfWork(unitOfWork):
beginWork()를 호출해 현재 작업 중인 Fiber 노드에 대한 작업 수행
현재 fiber 노드의 컴포넌트를 렌더링
렌더링된 결과를 바탕으로 자식 fiber 노드들을 생성
업데이트를 수행
업데이트가 필요한 자식 노드를 찾아서 업데이트 작업 진행
다음 작업 단위로 이동
...
beginWork(현재 작업):
현재 작업 노드의 타입 확인
if 현재 작업 노드가 클래스 컴포넌트라면:
클래스 컴포넌트의 라이프사이클 메서드 호출
클래스 컴포넌트의 render 메서드를 호출하여 자식 노드 생성
elif 현재 작업 노드가 함수 컴포넌트라면:
함수 컴포넌트를 호출하여 자식 노드 생성
elif 현재 작업 노드가 호스트 컴포넌트라면:
DOM 업데이트를 위한 변경 사항 처리
...
작업 수행 후 자식 노드에 대한 작업을 반환
completeUnitOfWork(unitOfWork):
작업이 완료된 Fiber 노드에 대한 처리 진행
완료된 fiber 노드의 변경 사항을 기록
해당 노드의 side effect를 기록
다음 작업 단위로 이동
다음 작업 단위가 없을 경우 부모 노드로 이동하며 반복
다음 작업 단위를 반환
...
commitRoot(finishedWork):
Reconciliation이 완료된 후, 변경된 내용을 실제 DOM에 반영
완료된 fiber 노드에서 변경 사항을 가져옴
변경된 요소를 실제 DOM에 적용
Render 과정을 수행하여 화면을 갱신
변경된 요소들에 대해 브라우저 렌더링 수행
...