Whether you're just getting started with React or looking to deepen your understanding, this course offers a comprehensive learning experience. You’ll explore the core concepts of React, work through practical assignments, build demo projects, and gradually develop a complete application—The Burger Builder—enhanced step by step throughout the course.
JavaScript powers modern web development, enabling dynamic, interactive experiences directly in the browser. However, building complex applications with plain JavaScript or jQuery can quickly become overwhelming. That’s where React comes in.
React simplifies web development by introducing a component-based architecture. Components are essentially custom HTML elements that can be reused, configured, and updated dynamically. For example, displaying a list of users becomes easy—just create a reusable "User" component and render it as needed.
Throughout the course, you'll learn how to:
Build and manage reusable components
Handle data and user interactions effectively
Apply modern JavaScript (ES6+) features
Create responsive, single-page applications
By the end of the course, you’ll have the skills and confidence to build dynamic and powerful React applications, along with a solid understanding of key modern JavaScript features.
Who should take this course?
The React Development online course is ideal for front-end developers, JavaScript programmers, and web development enthusiasts who want to build modern, responsive user interfaces using React. It’s also suitable for computer science students, full stack developers, and professionals looking to enhance their UI/UX skills. A basic understanding of HTML, CSS, and JavaScript is recommended to get the most out of this course.
Course Curriculum
Getting Started
Introduction
What is React?
Real-World SPAs & React Web Apps
Writing our First React Code
Why Should we Choose React?
React Alternatives
Understanding Single Page Applications and Multi Page Applications
Course Outline
Refreshing Next Generation JavaScript
Module Introduction
Understanding "let" and "const"
Arrow Functions
Exports and Imports
Understanding Classes
Classes, Properties and Methods
The Spread & Rest Operator
Destructuring
Reference and Primitive Types Refresher
Refreshing Array Functions
Wrap Up
Understanding the Base Features & Syntax
Module Introduction
The Build Workflow
Using Create React App
Understanding the Folder Structure
Understanding Component Basics
Understanding JSX
JSX Restrictions
Creating a Functional Component
Working with Components & Re-Using Them
Outputting Dynamic Content
Working with Props
Understanding the Children Property
Understanding & Using State
Handling Events with Methods
Manipulating the State
Using the useState() Hook for State Manipulation
Stateless vs Stateful Components
Passing Method References between Components
Adding Two Way Binding
Adding Styling with Stylesheets
Working with Inline Styles
Assignment 1: Time to Practice - The Base Syntax
[OPTIONAL] Base Syntax Assignment Solution
Working with Lists and Conditionals
Module Introduction
Rendering Content Conditionally
Handling Dynamic Content "The JavaScript Way"
Outputting Lists (Intro)
Outputting Lists
Lists & State
Updating State Immutably
Lists & Keys
Flexible Lists
Wrap Up
Assignment 2: Time to Practice - Lists and Conditions
[OPTIONAL] Lists and Conditions Assignment Solution
Styling React Components & Elements
Module Introduction
Outlining the Problem Set
Setting Styles Dynamically
Setting Class Names Dynamically
Adding and Using Radium
Using Radium for Media Queries
Introducing Styled Components
More on Styled Components
Styled Components & Dynamic Styles
Working with CSS Modules
CSS Modules & Media Queries
Debugging React Apps
Module Introduction
Understanding Error Messages
Finding Logical Errors by using Dev Tools & Sourcemaps
Working with the React Developer Tools
Using Error Boundaries (React 16+)
Wrap Up
Diving Deeper into Components & React Internals
Module Introduction
A Better Project Structure
Splitting an App into Components
Comparing Stateless and Stateful Components
Class-based vs Functional Components
class Component Lifecycle Overview
Component Creation Lifecycle in Action
Component Updating Lifecycle (for props Changes)
Component Updating Lifecycle (for state Changes)
Using useEffect() in Functional Components
Controlling the useEffect() Behavior
Cleaning up with Lifecycle Hooks & useEffect()
Cleanup Work with useEffect() - Ex
Using shouldComponentUpdate for Optimization
Optimizing Functional Components with React.memo()
When should you optimize?
PureComponents instead of shouldComponentUpdate
How React Updates the DOM
Rendering Adjacent JSX Elements
Using React.Fragment
Higher Order Components (HOC) - Introduction
Another Form of HOCs
Passing Unknown Props
Setting State Correctly
Using PropTypes
Using Refs
Refs with React Hooks
Understanding Prop Chain Problems
Using the Context API
contextType & useContext()
Wrap Up
A Real App: The Burger Builder (Basic Version)
Module Introduction
Planning an App in React - Core Steps
Planning our App - Layout and Component Tree
Planning the State
Setting up the Project
Creating a Layout Component
Starting Implementation of the Burger Builder Container
Adding a Dynamic Ingredient Component
Adding Prop Type Validation
Starting the Burger Component
Outputting Burger Ingredients Dynamically
Calculating the Ingredient Sum Dynamically
Adding the Build Control Component
Outputting Multiple Build Controls
Connecting State to Build Controls
Removing Ingredients Safely
Displaying and Updating the Burger Price
Adding the Order Button
Creating the Order Summary Modal
Showing & Hiding the Modal (with Animation!)
Implementing the Backdrop Component
Adding a Custom Button Component
Implementing the Button Component
Adding the Price to the Order Summary
Adding a Toolbar
Using a Logo in our Application
Adding Reusable Navigation Items
Creating a Responsive Sidedrawer
Working on Responsive Adjustments
More about Responsive Adjustments
Reusing the Backdrop
Adding a Sidedrawer Toggle Button
Adding a Hamburger Icon
Improving the App: Introduction
Prop Type Validation
Improving Performance
Using Component Lifecycle Methods
Changing the Folder Structure
Wrap Up
Reaching out to the Web (Http / Ajax)
Module Introduction
Understanding Http Requests in React
Understanding our Project and Introducing Axios
Creating Http Request to GET Data
Rendering Fetched Data to the Screen
Transforming Data
Making a Post Selectable
Fetching Data on Update (without Creating Infinite Loops)
POSTing Data to the Server
Sending a DELETE Request
Fixing a Bug
Handling Errors Locally
Adding Interceptors to Execute Code Globally
Setting a Default Global Configuration for Axios
Creating and Using Axios Instances
Wrap Up
Burger Builder Project: Accessing a Server
Module Introduction
Creating the Firebase Project
Creating the Axios Instance
Sending a POST Request
Displaying a Spinner while Sending a Request
Handling Errors
Retrieving Data from the Backend
Removing Old Interceptors
Multi-Page-Feeling in a Single-Page-App: Routing
Module Introduction
Routing and SPAs
Setting up Links
Setting Up the Router Package
Preparing the Project for Routing
Setting Up and Rendering Routes
Rendering Components for Routes
Switching Between Pages
Using Links to Switch Pages
Using Routing-Related Props
The "withRouter" HOC & Route Props
Absolute vs Relative Paths
Styling the Active Route
Passing Route Parameters
Extracting Route Parameters
Using Switch to Load a Single Route
Navigating Programmatically
Additional Information Regarding Active Links
Understanding Nested Routes
Creating Dynamic Nested Routes
Redirecting Requests
Conditional Redirects
Using the History Prop to Redirect (Replace)
Working with Guards
Handling the 404 Case (Unknown Routes)
Loading Routes Lazily
Lazy Loading with React Suspense (16.6)
Routing and Server Deployment
Assignment 3: Time to Practice - Routing
[OPTIONAL] Routing Assignment Solution
Wrap Up
Adding Routing to our Burger Project
Module Introduction
Building the Checkout Container
Setting Up Routing & Routes
Navigating to the Checkout Page
Navigating Back & To Next Page
Passing Ingredients via Query Params
Navigating to the Contact Data Component
Order Submission & Passing Data between Pages
Adding an Orders Page
Implementing Navigation Links
Fetching Orders
Outputting the Orders
Wrap Up
Forms and Form Validation
Module Introduction
Analyzing the App
Creating a Custom Dynamic Input Component
Setting Up a JS Config for the Form
Dynamically Create Inputs based on JS Config
Adding a Dropdown Component
Handling User Input
Handling Form Submission
Adding Custom Form Validation
Fixing a Common Validation Gotcha
Adding Validation Feedback
Improving Visual Feedback
Handling Overall Form Validity
Wrap Up
Fixing a Bug
Redux
Module Introduction
Understanding State
The Complexity of Managing State
Understanding the Redux Flow
Setting Up Reducer and Store
Dispatching Actions
Adding Subscriptions
Connecting React to Redux
Connecting the Store to React
Dispatching Actions from within the Component
Assignment 4: Time to Practice – Dispatching actions