Button - props review challenge
Challenge - Button w/ Children
Button - More Complex React Children
Challenge - add onClick event listener
Aside - Destructuring props
Button - fix className issue
Challenge - Button w/ Variants
Mega Challenge - Overloaded Avatar Component
Aside: Compound Components Intro
Compound Components in React - Part 1
Compound Components in React - Part 2
Compound Components in React - Part 3
Summarize Challenge - Compound Components in React
Prop Drilling Problem #2 - Implicit State
React.Children shortcomings
createContext() & Context Provider
Add context to the Menu component
Theme switcher final touches
Menu component final touches
Aside - Compound components w/ dot syntax
Headless Toggle component
Use Toggle with Menu component
Composing new components with Toggle
Refs and DOM manipulation
Fix onToggle bug using refs
Fix missing onToggle bug using a noop function
Render Props Part 4 - children as render props
Custom Hooks - useEffectOnUpdate
Custom Hooks - useToggle part 2
Custom Hooks - useToggle part 3
Custom Hooks - useToggle part 4
Custom Hooks - useToggle part 5
Custom Hooks - useToggle part 6
Custom Hooks - useToggle part 7
Custom Hooks - useToggle part 8
Custom Hooks - useToggle part 9
Reusability section recap
Solo Project - Component Library++
Introduction to React Router 6
Multi-page vs single-page apps
React Router Setup & BrowserRouter
BrowserRouter & Routes challenge
VanLife project bootstrapping
Initial Deploy to Netlify
Challenge: Vans Page - Part 1
Challenge: Vans Page - Part 2
Route Params part 3.1 - useParams() & challenge
Route Params part 3.2 - useParams() challenge
Fixing the Navbar with a Layout Route
Fixing the Navbar with a Layout Route part 2
Active Link Styling with NavLink
Active Link Styling with NavLink - part 2
🔀 Optional Side Quest - Building out the Host Vans List and Detail Pages
Building out the Host Van Detail page
Add /host/vans/:id Nested Routes
Challenge: Set up search params in VanLife
Filter the array w/ the search param
Challenge: Filter the vans in VanLife
Using Links to add search params
Challenge: Filter the vans with Links
Using the search params setter function
Challenge: Filter the vans with a setter function
Caveats to setting params
Merging search params with Links
Merging search params with the setSearchParams function
Challenge: Conditional rendering practice
Fix remaining absolute paths
Challenge: conditionally render the back button text
"Happy Path" vs. "Sad Path"
Quick update to our fetching code
Coding the Sad Path - Loading state
Coding the Sad Path - Error handling
Update: Accessibility Addition
Note from the future: importing image assets in Vite
Protected Routes - AuthRequired Layout Route
Protected Routes - Implementing "auth"
Protected Routes - Navigate
Setup for authentication - happy path
Authentication setup - sad path
Navigate to /host route after login
History Stack and Replace
Challenge - send user to original page
Placeholders are gone! 🎉
Cloud Firestore Setup 🔥
Cloud Firestore Code Setup
Collection ref and getVans() function
Refactor getHostVans function
Three phases of "rendering"
Using Dev Tools to Measure Performance
StrictMode - double renders components
StrictMode - rerunning side effects
Code Splitting lazy Suspense - Part 1
Code Splitting lazy Suspense - Part 2
React.memo() - reducing rerenders
Value vs. Reference Types & referential equality
useMemo() React.memo() and referential equality
Certificate of Completion