

목 차
1. React.js의 기본 이해와 환경 구축.
2. 컴포넌트 설계와 Props/State
3. React Hooks 상세 가이드
4. 상태 관리 심화 (컴포넌트 내부 -> 전역 )
5. 라우팅과 네비게이션
6. 폼 처리와 유효성 검증
7. API 연동과 데이터 핸들링
8. 스타일링 전략
9. 컴포넌트 재사용성과 추상화
10. 테스트와 품질 보장
11. 프로젝트 설계 & 최적화 & 배포.
12. React 렌더링 성능 최적화.

📙 React는 왜 등장했는가? (MVC 한계와 컴포넌트 기반의 필요성)
📙 Virtual DOM vs Real DOM
📙 선언형 UI vs 명령형 UI
📙 SPA와 CSR의 차이점

📙 Node.js, npm/yarn 설치 및 관리
📙 React 프로젝트 초기화 (Vite, CRA, Next.js 비교)
📙 디렉터리 구조 설계 (src, components, pages, hooks 등)

📙 JSX의 정체: HTML-in-JavaScript or JS-in-HTML?
📙 JSX 표현식의 위치와 제한사항
📙 JSX 내 조건문 처리 방법 (&&, ? :, if 활용)
📙 JSX에서 배열 렌더링 (key 역할과 주의점 + 조건부 렌더링 + 리스트 렌더링)
📙 JSX의 스타일링 방법 (inline, className, 외부 CSS 등)

📙 함수형 컴포넌트 정의 및 구조
📙 컴포넌트는 왜 순수 함수처럼 만들어야 하나?
📙 컴포넌트 분리 기준: 재사용성, 책임 분리 (SRP)

📙 부모 → 자식 데이터 전달
📙 props destructuring (구조 분해 할당)
📙 props의 기본값 설정 (defaultProps, TypeScript 타입 사용)
📙 children props와 slot-like 패턴 설계
📙 단방향 데이터 흐름 .

📙 기본 사용법 (counter 예제)
📙 객체 및 배열 상태 업데이트 (불변성 주의)
📙 상태 업데이트는 비동기적이다 → 배치 업데이트 이해
📙 여러 개의 state 변수 분리 vs 통합 전략
📙 Controlled Component (양방향 데이터 흐름 )

📙 상태 변경이 자주 일어나는 경우 useReducer의 이점
📙 컴포넌트가 많은 상태를 다룰 때 useState와의 차이

📙 의존성 배열.
📙 의존성 배열로 인한 불필요한 호출 방지
📙 클린업 함수 최적화 (clearTimeout, abortController)
📙 렌더링과 effect 실행 타이밍 구분 (동기 vs 비동기 문제)

📙 연산량이 많은 계산 캐싱
📙 함수/객체 참조 변경 방지 (자식 컴포넌트 불필요 리렌더 방지)
📙 과도한 사용 시 오히려 성능 저하되는 케이스 분석


📙 성능 고려 + 설계 원칙(네이밍, 재사용성, 관심사 분리)
📙 내부 상태 공유와 컴포넌트 간 리렌더링 분리 전략
📙 context + custom hook 구성 시 memo 병합

📙 state hoisting이 가져오는 렌더링 비용
📙 로컬 상태를 전역으로 올릴 때의 trade-off 분석

📙 Context의 재렌더링 문제 (Provider 하위 트리 전체 리렌더)
📙 해결 방안:
📒 상태 분리 Provider (context 분할)
📒 "Prop Drilling 해결책으로서 Context"
📒 "Context 재렌더링 이슈 + use-context-selector 해결"
📒 context + memo + selector 패턴 적용 (e.g. use-context-selector)
📒 Zustand/Recoil과의 비교 분석

📙 렌더링 트리깊이와 상태 위치에 따른 영향도 분석
📙 Recoil, Zustand, Jotai에서의 atom 단위 렌더링 제어

📙 Redux Toolkit: 대규모 프로젝트
📙 Zustand: 경량 상태 관리
📙 Recoil: atom 단위 & React 친화성

📙 대용량/복잡 상태에서의 불변성 관리 (immer or batching)
📙 deep clone 없이 성능 유지를 위한 트릭

📙 BrowserRouter, Routes, Route 설정
📙 동적 파라미터 처리 (:id, useParams)
📙 Link, useNavigate 활용한 페이지 이동

📙 중첩 라우트와 Outlet 구조
📙 레이아웃 기반 라우팅
📙 Auth Route (로그인 여부에 따른 진입 제한)
📙 Lazy loading + Suspense 활용

📙 controlled vs uncontrolled input
📙 input 상태 관리와 submit 이벤트
📙 폼 값의 객체 관리 및 리셋 처리

📙 register, handleSubmit 구조
📙 유효성 검증 패턴 (required, pattern 등)
📙 외부 라이브러리 연동: Yup, Zod
📙 상태별 에러 메시지 및 focus 처리

📙 useEffect 내 fetch 요청 시 렌더 차단 이슈 해결
📙 Suspense + useTransition 활용 (React 18)
📙 요청 중 중복 방지 (debounce, throttle, abortController)

📙 캐싱 전략:
📒 LocalStorage vs SessionStorage vs 메모리 (context/Zustand)
📒 stale-while-revalidate 패턴 소개
📙 SWR, React Query에서의 캐싱 전략
📒 revalidation 시간 제어
📒 background fetch, prefetch, pagination

📙 로딩 중에는 skeleton UI 적용으로 렌더 차단 최소화
📙 fallback 구조 및 에러 경량 처리
📙 대량 데이터 비동기 페이징 구성 (무한스크롤 vs 페이지네이션)

📙 중복 요청 방지
📙 중첩 fetch 병렬화: Promise.all, batching 요청 구성
📙 GraphQL vs REST 요청 단위 성능 비교

📙 전통적인 CSS + CSS Modules
📙 Styled-components 기본/고급 사용법
📙 Tailwind CSS 설정 및 활용 패턴

📙 ThemeProvider 패턴
📙 전역 스타일 reset
📙 조건부 스타일 적용 (isDark 모드 분기)

📙 atoms, molecules, organisms의 구조 이해
📙 디자인 시스템 구성의 기반

📙 HOC: withAuth, withLoading 등의 패턴
📙 Render Props 패턴과 훅 대체

📙 Tabs, Accordion, Modal 구조 추상화
📙 Context 조합으로 상태 공유

📙 Jest + React Testing Library 설정
📙 컴포넌트 렌더링 및 이벤트 시뮬레이션

📙 MSW(mock service worker)로 API 응답 시뮬레이션
📙 상태 기반 조건별 테스트 시나리오 구성

📙 도메인 기반 폴더 구조
📙 컴포넌트, 훅, API, 상태 구조 분리
📙 Lint, Prettier, husky 적용

📙 불필요한 렌더링 방지 (React.memo, key 주의)
📙 코드 스플리팅 (lazy, Suspense)
📙 이미지 lazy loading, preload 전략

📙 Vite/CRA/Next 기반 빌드 비교
📙 Vercel, Netlify, S3 배포
📙 .env 구성, CORS, API 연결 체크리스트

📙 컴포넌트 렌더링 발생 조건
📒 상태(state)/props 변경 → 리렌더링 흐름
📒 부모 컴포넌트 리렌더 시 자식 렌더링 여부
📙 Virtual DOM 비교 & Diff 알고리즘 개념
📙 reconciliation(조정) 과정이 일어나는 시점
📙 Render Phase & Commit Phase 구분
📙 effect 실행 시점 포함

📙 기존 Stack Reconciliation vs Fiber 비교
📙 우선순위 기반 작업 분할

📙 React.memo로 컴포넌트 메모이제이션
📒 props가 참조값일 경우 (객체, 함수)의 문제점
📒 shallow compare 원리와 주의점
📙 useCallback, useMemo 적절한 사용 시점
📒 의존성 배열 관리
📒 과용 시 성능 악화 사례도 소개
📙 key의 역할과 적절한 사용법
📒 index 사용이 문제되는 이유
📒 동적 리스트의 key 관리 팁

📙 requestAnimationFrame 활용 예시
📙 Transition API (React 18+) 개요
📒 startTransition()을 통한 낮은 우선순위 렌더링
📒 UI 응답성 향상 사례 실습
📒 Suspense for Data Fetching
📙 React 18 자동 배칭
📙 startTransition, useDeferredValue 등

📙 React Profiler 탭 활용법
📒 “Why did this render?” 플러그인 활용
📒 render count, re-render 원인 추적
📙 console.time, flamegraph 등 실습

📙 Form 컴포넌트에서의 Debounce 렌더링
📙 Table/Grid 대용량 렌더링 최적화 (Virtualized)
📙 불필요한 context 재렌더링 문제와 해결법

📙 SSR (Server Side Rendering)의 초기 렌더링 특징
📙 hydration 과정의 성능 이슈
📙 CSR 대비 성능 trade-off 비교
📙 Next.js 기준 렌더링 방식별 비교 (SSR, SSG, ISR, CSR)

📙 ErrorBoundary 클래스 컴포넌트 예시
📙 try/catch vs ErrorBoundary 차이