React — Learning Roadmap
Estimated Time to Job-Ready
5-8 weeks of consistent learning (2-3 hours/day), assuming solid JavaScript fundamentals already in place (see Prerequisites) — React-specific material (components, hooks, reconciliation) builds directly on that rather than re-teaching JavaScript itself.
Phase 1: Components, Props & JSX (Week 1)
className, {} expressions, self-closing tags.map() and understanding why key is requiredCheckpoint: can you explain, without looking it up, why is a bug while is correct?
Phase 2: State, Hooks & Effects (Week 2-3)
useState — reading, updating, and understanding that updates are not immediate within the same renderuseEffect basics — dependency arrays, and what [] vs. omitted actually meansCheckpoint: given a useEffect with a fetch call inside it and an empty dependency array, can you explain exactly when it runs and why it won't re-run if a prop it uses later changes?
Phase 3: Intermediate Patterns (Week 4-5)
useContext for values genuinely needed across many depths (theme, current user) — and recognizing when it's the wrong tool for state shared by just two nearby componentsuseRef for DOM access and non-rendering mutable valuesuseEffect cleanup (the cancellation-flag pattern)Checkpoint: can you explain the specific bug that occurs when a reorderable list uses the array index as its key, and why using a stable ID from the data fixes it?
Phase 4: Advanced & Interview Readiness (Week 6-8)
useMemo/useCallback — profiling first, memoizing deliberately rather than reflexivelyCommon Pitfalls Specific to React (Not Generic Study Advice)
key on any list that can reorder or have items removed — this silently misattributes component identity across renders; see Intermediate/Advanced for the exact mechanismuseEffect dependencies — a genuinely common real bug class covered in depth in Troubleshooting (stale closures, infinite fetch loops)array.push(item) then calling the setter with the same reference) instead of creating a new array/object — React compares by reference and won't detect the changeuseMemo/useCallback as a default habit rather than after actually profiling — adds real complexity for often-negligible gainsGetting Your First React-Heavy Role
useDebounce hook to cut API calls on a live search by 80%" is far stronger than "experience with React"useEffect dependency array come up constantly precisely because they separate real hands-on experience from copy-pasted tutorial familiarity
