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.js
createRoot()
: 루트 컨테이너를 생성합니다.
packages/react-dom/src/client/ReactDOMRoot.js
root.render()
: 애플리케이션 렌더링을 시작합니다.
packages/react-reconciler/src/ReactFiberReconciler.js
updateContainer()
: 컨테이너 업데이트를 시작합니다.
packages/react-reconciler/src/ReactFiberWorkLoop.js
scheduleUpdateOnFiber()
: Fiber 업데이트를 스케줄링합니다.performSyncWorkOnRoot()
또는performConcurrentWorkOnRoot()
packages/react-reconciler/src/ReactFiberBeginWork.js
beginWork()
: 각 Fiber 노드 작업을 시작합니다.
packages/react-reconciler/src/ReactFiberHooks.js
renderWithHooks()
: 함수 컴포넌트 렌더링 및 훅 처리
packages/react-reconciler/src/ReactFiberClassComponent.js
- 클래스 컴포넌트 처리 (해당하는 경우)
packages/react-reconciler/src/ReactChildFiber.js
reconcileChildFibers()
: 자식 요소 재조정
packages/react-reconciler/src/ReactFiberCompleteWork.js
completeWork()
: 각 Fiber 노드 작업 완료
packages/react-reconciler/src/ReactFiberCommitWork.js
commitRoot()
: 변경사항 DOM에 적용
packages/react-dom/src/client/ReactDOMHostConfig.js
- DOM 조작 함수들 (예:
appendChild()
,insertBefore()
)
- DOM 조작 함수들 (예:
이벤트 처리
packages/react-dom/src/events/DOMPluginEventSystem.js
- 이벤트 리스너 설정 및 처리
상태 업데이트 시
packages/react-reconciler/src/ReactUpdateQueue.js
enqueueUpdate()
: 업데이트 큐에 추가
렌더링 완료 후
packages/react-reconciler/src/ReactFiberWorkLoop.js
finishConcurrentRender()
또는commitRootImpl()
클린업 및 부수 효과
packages/react-reconciler/src/ReactFiberCommitWork.js
commitPassiveUnmountEffects()
,commitPassiveMountEffects()