The Modern React Bootcamp (Hooks/ Context/ NextJS/ Router)
About Course
Learn React from scratch with this comprehensive bootcamp course, covering everything from the basics to advanced concepts like Next JS, React Router, Hooks, and the Context API. This course is completely free and is offered by Udemy, Udacity, Coursera, MasterClass, NearPeer, and other platforms.
This course is based on the same curriculum used in real-world bootcamps and has been refined based on feedback from students. You will build a massive capstone application with drag & drop, animations, route transitions, complex form validations, and more. You’ll also learn the latest in React, including Hooks, and master state management using the useContext and useReducer hooks.
This course includes over 250 videos, interactive slide decks, detailed handouts, and cheatsheets, dozens of exercises, projects, and quizzes, and one massive code-along project with nearly 20 different React components. Get started today and become a React expert!
Keywords: React, React Bootcamp, Hooks, NextJS, React Router, Context API, JavaScript, Web Development, Front-End Development, Webpack, Udemy, Udacity, Coursera, MasterClass, NearPeer, Free Online Courses
What Will You Learn?
- React Hooks! (My favorite part of React!)
- The new Context API
- State management w/ useReducer + use Context (Redux Lite)
- The basics of React (props, state, etc)
- Master React Router
- Build tons of projects, each with a beautiful interface
- React State Management Patterns
- Drag & Drop With React
- Writing dynamically styled components w/ JSS
- Common React Router Patterns
- Work with tons of libraries and tools
- Integrate UI libraries like Material UI and Bootstrap into your React apps
- React Design Patterns and Strategies
- Learn the ins and outs of JSS!
- Learn how to easily use React to build responsive apps
- Add complex animations to React projects
- Debug and Fix buggy React code
- Optimize React components
- Integrate React with APIs
- Learn the basics of Webpack in a free mini-course!
- DOM events in React
- Forms and complex validations in React
- Using Context API w/ Hooks
Course Content
A Taste of React
-
A Message from the Professor
-
Welcome to the Course!
01:42 -
Intro to React
03:35 -
Is React a Framework or Library
05:03 -
Introducing Components!
10:32 -
Looking at a Large App
04:31 -
Setting Up Your Server
03:44 -
Writing Our First Component
09:32 -
Function Vs. Class Components
04:09 -
Download All Code Slides & Handouts
05:05
Introducing JSX
-
Basics Rules of JSX
04:43 -
How JSX Works Behind the Scenes
03:32 -
Embedding JavaScript in JSX
03:44 -
Conditionals in JSX
09:13 -
Standard React App Layout
05:08
Props and More
-
Intro to React Props
05:57 -
Props are Immutable
02:21 -
Other Types of Props
05:53 -
Pie Chart Component Demo w Props
02:03 -
EXERCISE Slot Machine
01:37 -
EXERCISE Slot Machine Solution
06:47 -
Looping in JSX
05:19 -
Adding Default Props
02:42 -
Styling React
08:56
Introducing Create React App
-
Intro to Create React App
02:58 -
2 Ways of Installing CRA
04:25 -
Creating a New App
05:06 -
Starting Up the Server
05:06 -
Modules Import & Export Crash Course
11:05 -
EXERICSE Fruits Modules
02:43 -
EXERCISE Fruits Modules Solution
07:39 -
Create React App Conventions
03:10 -
CSS and Assets in Create React App
07:51
Pokedex Project
-
Intro To Pokedex Exercise
07:01 -
Creating Pokecard Component
07:39 -
Adding Pokedex Component
04:28 -
Styling PokeCard and Pokedex
06:28 -
Adding Fancier Images
02:43 -
The PokeGame Component
09:16 -
Styling Pokegame
09:12
Introducing State
-
State Goals
02:01 -
Quick Detour React Dev Tools
03:12 -
State in General
03:33 -
Initializing State
08:37 -
IMPORTANT! ALTERNATE SYNTAX
09:17 -
WTF is super() Vs. super(props)
07:24 -
Setting State Correctly
10:24 -
Crash Course Click Events in React
10:49 -
ALTERNATE SYNTAX PT 2
05:52 -
EXERCISE State Clicker
01:48 -
EXERCISE State Clicker Solution
07:25 -
The State As Props Design Pattern
03:02
React State Dice Exercise
-
Introduction to Dice Exercise
08:21 -
Writing the Die Component
06:07 -
Adding the RollDice Component
09:02 -
Styling RollDice
04:05 -
Animating Dice Rolls!
10:36
React State Patterns
-
Updating Existing State
10:41 -
Mutating State the Safe Way
10:15 -
Designing State Minimizing State
04:04 -
Designing State Downward Data Flow
04:01 -
State Design Example Lottery
03:51 -
State Design Example LottoBall Component
04:02 -
State Design Example Lottery Component
11:34
State Exercises!
-
State Exercise 1 Coin Flipper
02:45 -
State Exercise 1 Coin Flipper Solution
18:29 -
State Exercise 2 Color Boxes
02:35 -
State Exercise 2 Color Boxes Solution
10:16
The World of React Events
-
Commonly Used React Events
09:44 -
The Joys of Method Binding (
09:06 -
Alternative Binding With Class Properties
05:03 -
Binding With Arguments
05:50 -
Passing Methods to Child Components
12:00 -
Parent-Child Method Naming
02:04 -
Quick Detour React Keys
07:43
Hangman Exercise
-
Introducing The Hangman Exercise
08:00 -
Starter Code Walkthrough
10:07 -
Adding Keys
01:44 -
Tracking Incorrect Guesses
01:36 -
Adding Game Over
06:19 -
Adding Alt Text
01:54 -
Randomizing Words
02:17 -
Adding a Reset Button
03:13 -
Making the Game Winnable & Styling
08:23
Lights Out Game
-
Introducing Lights Out
03:07 -
Exploring the Starter Code
09:28 -
Displaying the Game Board
11:16 -
Flipping Cells
05:09 -
Winning the Game
03:24 -
Styling the Game
11:03
Forms in React
-
Intro to React Forms
10:53 -
Writing Forms w Multiple Inputs
07:21 -
The htmlFor Attribute
01:26 -
Design Pattern Passing Data Upwards
10:28 -
Using the UUID Library
03:32
Forms Exercise
-
Introduction to Box Maker Exercise
01:58 -
Adding the BoxList Component
06:16 -
Creating the BoxForm Component
08:12 -
Removing Color Boxes
06:08
Todo List Project
-
Project Overview
02:09 -
TodoList and TodoItem Components
04:59 -
Adding NewTodoForm
06:03 -
Removing Todos
06:34 -
Editing Todos
12:08 -
Toggling Todo Completion
05:31 -
Styling the Todo App
10:43
Building Yahtzee
-
Introducing Yahtzee
08:16 -
Yahtzee Starter Code Walkthrough
13:16 -
Fixing the Dice Locking Bug
09:33 -
Reading the Rules Classes
16:02 -
Adding In New Rules
09:50 -
Fixing the Re-Rolling Bug
08:13 -
Preventing Score Reuse
09:21 -
Adding Score Descriptions
04:00 -
Replacing Text w Dice Icons
14:07 -
Animating Dice Rolls
13:45 -
Final Touches and Bug Fixes
09:17
React Lifecycle Methods
-
Introducing ComponentDidMount
08:47 -
Loading Data Via AJAX
06:56 -
Adding Animated Loaders
04:57 -
Loading Data With Async Functions
07:02 -
Introducing ComponentDidUpdate
04:20 -
PrevProps and PrevState in ComponentDidUpdate
06:37 -
Introducing ComponentWillUnmount
02:22
LifeCycle Methods & API Exercise
-
Introducing the Cards API Project
03:55 -
Requesting a Deck ID
05:24 -
Fetching New Cards with AJAX
10:37 -
Adding the Card Component
03:36 -
Randomly Transforming Cards
07:00 -
Styling Cards and Deck
05:29
Building the Dad Jokes App
-
Introducing the Dad Jokes Project
06:01 -
Fetching New Jokes From the API
07:42 -
Styling JokeList Component
10:07 -
Upvoting and Downvoting Jokes
09:01 -
Styling the Joke Component
05:59 -
Adding Dynamic Colors and Emojis
03:50 -
Syncing with LocalStorage
05:36 -
Fixing Our LocalStorage Bug
03:54 -
Adding a Loading Spinner
03:29 -
Preventing Duplicate Jokes
08:07 -
Sorting Jokes
02:35 -
Styling The Fetch Button
04:56 -
Adding Animations
06:35
React Router
-
Intro to Client-Side Routing
09:48 -
Adding Our First Route
06:07 -
Using Switch and Exact
07:20 -
Intro to the Link Component
03:37 -
Adding in NavLinks
03:21 -
Render prop vs. Component prop in Routes
09:24
Vending Machine Exercise
-
Intro to Vending Machine Exercise
02:13 -
Adding The Vending Machine Routes
04:33 -
Adding the Links
04:17 -
Creating the Navbar
06:21 -
NEW CONCEPT Props.children
07:02
React Router Patterns
-
Working with URL Params
12:46 -
Multiple Route Params
05:10 -
Adding a 404 Not Found Route
03:11 -
Writing a Simple Search Form
05:20 -
The Redirect Component
04:44 -
Pushing onto the History Prop
06:13 -
Comparing History and Redirect
03:05 -
withRouter Higher Order Component
04:31 -
Implementing a Back Button
02:57
Router Exercises Part 2
-
Exercise Introduction
03:27 -
Working with Bootstrap in React
06:50 -
Writing the DogList Component
09:30 -
Adding the DogDetails Component
13:41 -
Creating Our Navbar Component
10:00 -
Refactoring & Extracting Our Routes
02:43 -
A Couple Small Tweaks
03:13 -
Styling the App
11:42
The Massive Color Project Pt 1
-
Introducing the Color App
09:16 -
The New Stuff We Cover in This Project
07:48 -
Finding the Final Project Code
01:57 -
Creating the Palette Component
05:59 -
Color Box Basics
06:49 -
Styling Color Box
10:34 -
Copying to Clipboard
03:26 -
Copy Overlay Animation
14:50 -
Generating Shades of Colors
17:11 -
Adding Color Slider
07:39 -
Styling the Color Slider
06:03 -
Adding Navbar Component
09:23
The Massive Color Project Pt 2
-
Intro to Material UI & Adding Select
13:50 -
Adding Snackbar
12:09 -
Add Palette Footer
04:30 -
Integrating React Router
04:08 -
Finding Palettes
04:02 -
PaletteList and Links
06:02
JSS & withStyles (Color App)
-
Introducing withStyles HOC
10:50 -
Styling MiniPalette with JSS
06:51 -
Styling PaletteList with JSS
07:37 -
Finishing Up MiniPalette
07:46
The Massive Color Project Pt 3
-
Linking To Palettes
06:26 -
Brainstorming Single Color Palette
05:20 -
Adding More Links
06:30 -
Creating Single Color Palette
08:28 -
Displaying Shades in Single Color Palette
12:42 -
Adding Navbar and Footer
09:24 -
Add Go Back Box
09:48 -
Dynamic Text Color w Luminosity
11:22 -
Refactoring More Styles
17:31 -
Finish Refactoring Color Box
06:54
The Massive Color Project Pt 4
-
Refactor Palette Styles
08:11 -
Move Styles Into New Folder
06:36 -
Refactor Navbar CSS
08:46 -
Overview of PaletteForm
05:46 -
Adding NewPaletteForm
04:58 -
Adding Slide-Out Drawer
11:21 -
Adding Color Picker Component
09:46 -
Connecting Color Picker to Button
08:47 -
Creating Draggable Color Box
07:20 -
Introducing Form Validator
12:28
The Massive Color Project Pt 5-problem
-
Saving New Palettes
11:01 -
Add Palette Name Form
10:17 -
Styling Draggable Color Box
06:49 -
Adding Color Box Delete
04:41 -
It’s Drag and Drop Time!
14:58 -
Clear Palette and Random Color Buttons
11:05 -
Extract New Palette Nav
13:07 -
Extract Color Picker Component
11:48 -
Styling Palette Form Nav
05:43 -
Styling Color Picker
10:04
The Massive Color Project Pt 6-problem
-
Adding ModalsDialogs
07:33 -
Styling Dialog
08:49 -
Closing Form & Adding Emoji
05:22 -
Finish Emoji Picker Form
12:23 -
Moving JSS Styles Out
06:54 -
Tweak Form Styles
07:08 -
Saving to LocalStorage
05:02 -
Adding MiniPalette Delete Button
07:00 -
Finish MiniPalette Delete
08:52 -
Create Responsive Sizes Helper
14:17 -
Make Color Box Responsive
07:34 -
Make Form & Navbar Responsive
09:00
The Massive Color Project Pt 7
-
Make Palette List Responsive
08:45 -
Add SVG Background
08:07 -
Fade Animations w Transition Group
12:14 -
Delete Confirmation Dialog
16:52 -
Fix DeleteDrag Bug
03:24 -
Animating Route Transitions
08:21 -
Refactoring Route Transitions
09:03 -
Optimizing w PureComponent
07:57 -
Cleaning Things Up
03:58 -
More Cleaning Up!
07:23 -
Fix Issues w New Palette Form
06:02 -
Prevent Duplicate Random Colors
05:05
Introducing React Hooks
-
Intro to Hooks & useState
11:09 -
Building a Custom Hook useToggleState
15:27 -
Building a Custom Hook useInputState
15:25 -
The useEffect Hook
06:45 -
Fetching Data w the useEffect Hook
12:16
React Hooks Project
-
Intro to Hooks Project
10:15 -
Adding Our Form With Hooks
07:56 -
Adding Todo Item Component
10:38 -
Toggling and Deletion w Hooks
08:27 -
Editing w Hooks
12:06 -
Small Style Tweaks
04:56 -
LocalStorage w UseEffect Hook
05:37 -
Refactoring to a Custom Hook
06:10 -
Creating our UseLocaslStorateState Hook
13:43
Introducing The Context API!
-
Where We Are Heading
02:44 -
What Even is Context
08:34 -
Adding a Responsive Navbar To Our Context App
18:48 -
Adding a Responsive Form to our Context App
14:44 -
Intro to Context and Providers
12:43 -
Consuming A Context
07:56 -
Updating A Context Dynamically
05:05 -
Writing the Language Context
13:38 -
Consuming 2 Contexts Enter the Higher Order Component
12:21
Using Context with Hooks
-
Introducing the useContext Hook
05:33 -
Consuming Multiple Contexts w Hooks
03:11 -
Rewriting a Context Provider w Hooks
04:23 -
Context Providers w Custom Hooks
04:41 -
Hookify-ing the Rest of the App
03:03
State Management w useReducer & useContext
-
Adding In Todos Context
09:01 -
Consuming the Todo Context
05:50 -
The Issues w Our Current Approach
10:01 -
WTF Is a Reducer
08:34 -
First useReducer Example
12:13 -
Defining our Todo Reducer
13:25 -
Splitting Into 2 Contexts
06:45 -
Optimizing w Memo
05:45 -
Custom Hook Reducer + LocalStorage
07:24
Next JS
-
Intro to Next
06:05 -
What is Server Side Rendering
11:51 -
Getting Started w Next
08:28 -
Basic Routing in Next
06:35 -
Next’s Link Component
06:01 -
Links Without Anchor Tags
02:08 -
Components Vs. Pages
04:14 -
Overriding the Default _app.js
07:19
Next Fetching & Server API
-
Introducing getInitialProps
11:19 -
Fetching Posts w getInitialProps
11:03 -
Query Strings in Next
09:57 -
withRouter Higher Order Component
02:53 -
Fetching Comments
08:06 -
The as Prop
04:29 -
Custom Server Without Express
13:13 -
Custom Server-Side Routes w Express
12:41
Bonus Webpack Mini Course – Your Own Simple Version of Create React App
-
What Is Webpack
09:23 -
Installing and Running Webpack
14:23 -
Imports Exports and Webpack
07:56 -
Configuring Webpack
09:15 -
Webpack Loaders CSS & SASS
15:14 -
Cache Busting and Plugins
13:33 -
Splitting Dev & Production
10:16 -
Html-loader file-loader and Clean Webpack Plugin
11:21 -
Multiple Entry Points
06:04 -
Extract and Minify CSS
18:18
Earn a certificate
Add this certificate to your resume to demonstrate your skills & increase your chances of getting noticed.