React의 핵심 기능을 직접 구현해보며 내부 동작 원리를 이해하기 위한 종합 가이드입니다.
이 과제를 통해 다음을 이해할 수 있습니다:
core/constants.ts, core/elements.ts, utils/equals.ts, utils/validators.ts)
TEXT_ELEMENT, Fragment 등의 심볼 정의isEmptyValue, shallowEquals, deepEquals 등 공용 유틸 구현createElement, normalizeNode, createChildPath로 JSX → VNode 정규화core/context.ts, core/types.ts, core/setup.ts, client/index.ts)
setup으로 루트 렌더 흐름 구축, createRoot 노출core/dom.ts)
utils/enqueue.ts, core/render.ts)
withEnqueue) 작성render/enqueueRender로 루트 렌더 사이클 구성core/reconciler.ts)
core/hooks.ts)
useState, useEffect, 이펙트 큐/cleanup, 미사용 훅 정리기본 과제 완료 기준: basic.equals.test.tsx, basic.mini-react.test.tsx 전부 통과
hooks/*.ts, hocs/*.ts)
useRef, useMemo, useCallback, useDeepMemo, useAutoCallbackmemo, deepMemo 고차 컴포넌트로 렌더 최적화심화 과제 완료 기준: advanced.hooks.test.tsx, advanced.hoc.test.tsx 전부 통과
# 기본 과제 검증
npm test basic.equals.test.tsx
npm test basic.mini-react.test.tsx
# 심화 과제 검증
npm test advanced.hooks.test.tsx
npm test advanced.hoc.test.tsx
# 전체 테스트
npm test
JavaScript 객체로 표현된 가상의 DOM 트리. 실제 DOM 조작의 비용을 줄이기 위해 사용됩니다.
이전 Virtual DOM과 새로운 Virtual DOM을 비교하여 실제 DOM에 최소한의 변경만 적용하는 과정입니다.
함수형 컴포넌트에서 상태와 생명주기 기능을 사용할 수 있게 해주는 메커니즘입니다. 호출 순서가 보장되어야 합니다.
각 컴포넌트 인스턴스를 고유하게 식별하기 위한 경로입니다. ("0.c0.i1.c2" 형식)
console.log('Component path:', hooks.currentPath);
console.log('Hook cursor:', hooks.currentCursor);
console.log('Current state:', hooks.currentHooks);
console.log('Reconciling:', {
newType: newNode?.type,
oldType: oldInstance?.node?.type
});
console.log('Deps changed:', {
prev: prevDeps,
next: nextDeps,
equal: shallowEquals(prev, next)
});
이 문서들을 통해 React의 내부 동작 원리를 깊이 이해하고, 실제로 동작하는 React 구현체를 만들어보세요! 🚀