React 실행 흐름
초기화
진입점 (예: index.js)
import React from 'react'import ReactDOM from 'react-dom/client'import App from './App'
packages/react/index.js- React 코어 API를 내보냅니다.
packages/react-dom/index.js- ReactDOM API를 내보냅니다.
packages/react-dom/src/client/ReactDOM.jscreateRoot(): 루트 컨테이너를 생성합니다.
packages/react-dom/src/client/ReactDOMRoot.jsroot.render(): 애플리케이션 렌더링을 시작합니다.
packages/react-reconciler/src/ReactFiberReconciler.jsupdateContainer(): 컨테이너 업데이트를 시작합니다.
packages/react-reconciler/src/ReactFiberWorkLoop.jsscheduleUpdateOnFiber(): Fiber 업데이트를 스케줄링합니다.performSyncWorkOnRoot()또는performConcurrentWorkOnRoot()
packages/react-reconciler/src/ReactFiberBeginWork.jsbeginWork(): 각 Fiber 노드 작업을 시작합니다.
packages/react-reconciler/src/ReactFiberHooks.jsrenderWithHooks(): 함수 컴포넌트 렌더링 및 훅 처리
packages/react-reconciler/src/ReactFiberClassComponent.js- 클래스 컴포넌트 처리 (해당하는 경우)
packages/react-reconciler/src/ReactChildFiber.jsreconcileChildFibers(): 자식 요소 재조정
packages/react-reconciler/src/ReactFiberCompleteWork.jscompleteWork(): 각 Fiber 노드 작업 완료
packages/react-reconciler/src/ReactFiberCommitWork.jscommitRoot(): 변경사항 DOM에 적용
packages/react-dom/src/client/ReactDOMHostConfig.js- DOM 조작 함수들 (예:
appendChild(),insertBefore())
- DOM 조작 함수들 (예:
이벤트 처리
packages/react-dom/src/events/DOMPluginEventSystem.js- 이벤트 리스너 설정 및 처리
상태 업데이트 시
packages/react-reconciler/src/ReactUpdateQueue.jsenqueueUpdate(): 업데이트 큐에 추가
렌더링 완료 후
packages/react-reconciler/src/ReactFiberWorkLoop.jsfinishConcurrentRender()또는commitRootImpl()
클린업 및 부수 효과
packages/react-reconciler/src/ReactFiberCommitWork.jscommitPassiveUnmountEffects(),commitPassiveMountEffects()