Video description
**This course is now updated for the latest version of React—React 18**
React.js is the most popular JavaScript library you can learn and use these days to build modern, reactive user interfaces for the web. In this course, you will dive into the core concepts of React, gaining a thorough understanding of its purpose and benefits. From building components and creating dynamic UIs to harnessing the full potential of React Hooks and working with state management using the Context API and React Redux, we have got you covered. Learn to build standalone React apps and connect them to backends using HTTP. Master routing and data fetching techniques with React Router. Implement user authentication in React apps and build full-stack applications with Next.js.
The course includes multiple demo projects, ensuring hands-on experience and practical application. Whether you prefer working locally or in a cloud development environment, we’ve got the flexibility you need.
We will also dive deep into advanced concepts such as debugging, styling with “Styled Components” and “CSS Modules,” working with Fragments and Portals, managing side effects, form handling with validation, incorporating Redux and Redux Toolkit, and leveraging React with TypeScript. Gain insights into animations and ensure robust code with comprehensive unit testing.
This updated version includes two new practice projects and an extensively revamped JS Refresher section. The JS Refresher section provides a comprehensive understanding of JavaScript, laying a solid foundation for building React applications.
By the end of this course, you will be equipped with the skills and knowledge to build robust web applications using React.js confidently.
What You Will Learn
- Learn all about components, props, and dynamic data binding
- Work with user events and states to create interactive apps
- Learn all about React Hooks and React components
- Understand class-based components and functional components
- Explore the process of implementing user authentication in React app
- Learn to combine React with TypeScript and add animations
Audience
Students who want to learn how to build reactive and fast web apps or want to take their web development skills to the next level can opt for this course.
This course starts with zero knowledge assumed. All you need is basic web development (HTML + CSS) and JavaScript knowledge. However, the course even includes a brief JavaScript refresher to ensure that we are all on the same page. ES6+ JavaScript knowledge is beneficial but not a must-have.
No prior React or any other JS framework experience is required!
About The Author
Academind by Maximilian Schwarzmüller:
Academind GmbH
Bundling the courses and the knowledge of successful instructors, Academind strives to deliver high-quality online education. The platform covers topics such as web development, data analysis, and more in a fun and engaging way.
Maximilian Schwarzmüller
Since the age of 13, he has never stopped learning new programming skills and languages. In his early days, he started creating websites simply for fun. This passion has remained and shaped his decision to work as a freelance web developer and consultant. Although he started web development on the backend (PHP with Laravel and NodeJS), he has progressed to becoming a front-end developer using modern frameworks such as React, Angular, and VueJS 2 in many projects.
The most rewarding experience for him is to see how people find new and better jobs, build exciting web applications, acquire amazing projects, or simply enjoy their hobby with the help of his content.
Table of contents
-
Chapter 1 : Getting Started
- Course Introduction
- Welcome to the Course!
- What Is React.js?
- ReactJS Versus "Vanilla JavaScript": Why Use React?
- Editing Our First React App
- About This Course and Course Outline
- The Two Ways (Paths) of Taking This Course
- Getting the Most Out of This Course
- Creating React Projects: Browser-Based Versus Local Development
- Creating React Projects Locally
- Using CodeSandbox for React Development (No Local Setup Required!)
-
Chapter 2 : JavaScript Refresher
- Module Introduction
- Starting Project
- Adding JavaScript to a Page and How React Projects Differ
- React Projects Use a Build Process
- "import" and "export"
- Revisiting Variables and Values
- Revisiting Operators
- Revisiting Functions and Parameters
- Arrow Functions
- Revisiting Objects and Classes
- Arrays and Array Methods like map()
- Destructuring
- The Spread Operator
- Revisiting Control Structures
- Manipulating the DOM - Not With React!
- Using Functions as Values
- Defining Functions Inside Of Functions
- Reference vs Primitive Values
-
Chapter 3 : React Basics and Working With Components
- Module Introduction
- What Are Components? And Why Is React All About Them?
- React Code Is Written In A "Declarative Way"!
- Creating a new React Project
- Analyzing a Standard React Project
- Introducing JSX
- How React Works
- Building a First Custom Component
- Writing More Complex JSX Code
- Adding Basic CSS Styling
- Outputting Dynamic Data and Working with Expressions in JSX
- Passing Data via "props"
- Alternative Ways of Passing and Receiving / Handling "props"
- Adding "normal" JavaScript Logic to Components
- Splitting Components Into Multiple Components
- React and Component Basics - Assignment Problem
- React and Component Basics - Assignment Solution
- The Concept of "Composition" ("children props")
- A First Summary
- A Closer Look At JSX
- Organizing Component Files
- An Alternative Function Syntax
- Chapter 4 : Time to Practice: Component Basics
-
Chapter 5 : React State and Working with Events
- Module Introduction
- Listening to Events and Working with Event Handlers
- How Component Functions Are Executed
- Working with "State"
- A Closer Look at the "useState" Hook
- Adding Form Inputs
- Listening to User Input
- Working with Multiple States
- Using One State Instead (And What's Better)
- Updating State That Depends on the Previous State
- Alternative: Creating a Shared Handler Function
- Handling Form Submission
- Adding Two-Way Binding
- Child-to-Parent Component Communication (Bottom-Up)
- Lifting the State Up
- Working with Events and State - Assignment Problem
- Working with Events and State - Assignment Solution
- Derived / Computed State
- Controlled Versus Uncontrolled Components and Stateless vs Stateful Components
-
Chapter 6 : Rendering Lists and Conditional Content
- Module Introduction
- Rendering Lists of Data
- Using Stateful Lists
- Understanding "Keys"
- Working with Lists - Assignment Problem
- Working with Lists - Assignment Solution
- Outputting Conditional Content
- Adding Conditional Return Statements
- Conditional Content - Assignment Problem
- Conditional Content - Assignment Solution
- Demo App: Adding a Chart
- Adding Dynamic Styles
- Wrap Up and Next Steps
- Chapter 7 : Styling React Components
- Chapter 8 : Debugging React Apps
-
Chapter 9 : Time to Practice: A Complete Practice Project
- Module Introduction
- The First Practice Project and Your Tasks
- Splitting the App Into Components
- Handling Events
- Managing State
- Lifting the State Up
- Outputting Results Conditionally
- Adding CSS Modules
- Introducing the Second Project
- Adding a "User" Component
- Adding a Reusable "Card" Component
- Adding a Reusable "Button" Component
- Managing the User Input State
- Adding Validation and Resetting Logic
- Adding a Users List Component
- Managing a List of Users through State
- Adding the "ErrorModal" Component
- Managing the Error State
- Chapter 10 : Diving Deeper: Working with Fragments, Portals, and "Refs"
-
Chapter 11 : Advanced: Handling Side Effects, Using Reducers, and Using the Context API
- Module Introduction
- What Are "Side Effects" and Introducing useEffect()
- Using the useEffect() Hook
- useEffect() and Dependencies
- Using the useEffect() Cleanup Function
- useEffect() Summary
- Introducing useReducer() and Reducers in General
- Using the useReducer() Hook
- useReducer() and useEffect()
- useReducer() Versus useState() for State Management
- Introducing React Context
- Using the React Context API
- Tapping into Context with the useContext() Hook
- Making Context Dynamic
- Building and Using a Custom Context Provider Component
- React Context Limitations
- Learning the "Rules of Hooks"
- Refactoring an Input Component
- Diving into "Forward Refs"
-
Chapter 12 : Practice Project: Building a Food Order App
- Module Introduction
- Starting Setup
- Adding a "Header" Component
- Adding the "Cart" Button Component
- Adding a "Meals" Component
- Adding Individual Meal Items and Displaying Them
- Adding a Form
- Working on the "Shopping Cart" Component
- Adding a Modal through a React Portal
- Managing Cart and Modal State
- Adding a Cart Context
- Using the Context
- Adding a Cart Reducer
- Working with Refs and Forward Refs
- Outputting Cart Items
- Working on a More Complex Reducer Logic
- Making Items Removable
- Using the useEffect() Hook
-
Chapter 13 : A Look Behind the Scenes of React and Optimization Techniques
- Module Introduction
- How React Really Works
- Component Updates in Action
- A Closer Look at Child Component Re-Evaluation
- Preventing Unnecessary Re-Evaluations with React.memo()
- Preventing Function Recreation with useCallback()
- useCallback() and Its Dependencies
- A First Summary
- A Closer Look at State and Components
- Understanding State Scheduling and Batching
- Optimizing with useMemo()
- Chapter 14 : An Alternative Way of Building Components: Class-Based Components
- Chapter 15 : Sending HTTP Requests
- Chapter 16 : Building Custom React Hooks
-
Chapter 17 : Working with Forms and User Input
- Module Introduction
- Our Starting Setup
- What's So Complex about Forms?
- Dealing with Form Submission and Getting User Input Values
- Adding Basic Validation
- Providing Validation Feedback
- Handling the "was touched" State
- React to Lost Focus
- Refactoring and Deriving States
- Managing the Overall Form Validity
- Time to Practice: Forms - Problem
- Time to Practice: Forms - Solution
- Adding a Custom Input Hook
- Reusing the Custom Hook
- A Challenge for You!
- Applying Our Hook and Knowledge to a New Form
- Summary
- Bonus: Using useReducer()
- Chapter 18 : Practice Project: Adding HTTP and Forms to the Food Order App
-
Chapter 19 : Diving into Redux
- Module Introduction
- Another Look at State in React Apps
- Redux versus React Context
- How Redux Works
- Exploring the Core Redux Concepts
- More Redux Basics
- Preparing a New Project
- Creating a Redux Store for React
- Providing the Store
- Using Redux Data in React Components
- Dispatching Actions from Inside Components
- Redux with Class-Based Components
- Attaching Payloads to Actions
- Working with Multiple State Properties
- How to Work with Redux State Correctly
- Redux Challenges and Introducing Redux Toolkit
- Adding State Slices
- Connecting Redux Toolkit State
- Migrating Everything to Redux Toolkit
- Working with Multiple Slices
- Reading and Dispatching from a New Slice
- Splitting Our Code
- Summary
-
Chapter 20 : Advanced Redux
- Module Introduction
- Redux and Side Effects (And Asynchronous Code)
- Refresher/Practice: Part 1
- Refresher/Practice: Part 2
- Redux and Async Code
- Frontend Code Versus Backend Code
- Where to Put Our Logic
- Using useEffect() with Redux
- Handling HTTP States and Feedback with Redux
- Using an Action Creator Thunk
- Getting Started with Fetching Data
- Finalizing the Fetching Logic
- Exploring the Redux DevTools
- Summary
-
Chapter 21 : Building a Multi-Page SPA with React Router
- Module Introduction
- Routing: Multiple Pages in Single-Page Applications
- Project Setup and Installing React Router
- Defining Routes
- Adding a Second Route
- Exploring an Alternative Way of Defining Routes
- Navigating Between Pages with Links
- Layouts and Nested Routes
- Showing Error Pages with errorElement
- Working with Navigation Links (NavLink)
- Navigating Programmatically
- Defining and Using Dynamic Routes
- Adding Links for Dynamic Routes
- Understanding Relative and Absolute Paths
- Working with Index Routes
- Onward to a New Project Setup
- Time to Practice: Problem
- Time to Practice: Solution
- Data Fetching with a loader()
- Using Data from a Loader in the Route Component
- More loader() Data Usage
- Where Should loader() Code Be Stored?
- When Are loader() Functions Executed?
- Reflecting the Current Navigation State in the UI
- Returning Responses in loader()s
- Which Kind of Code Goes into loader()s?
- Error Handling with Custom Errors
- Extracting Error Data and Throwing Responses
- The json() Utility Function
- Dynamic Routes and loader()s
- The useRouteLoaderData() Hook and Accessing Data from Other Routes
- Planning Data Submission
- Working with action() Functions
- Submitting Data Programmatically
- Updating the UI State Based on the Submission Status
- Validating User Input and Outputting Validation Errors
- Reusing Actions through Request Methods
- Behind-the-Scenes Work with useFetcher()
- Deferring Data Fetching with defer()
- Controlling Which Data Should Be Deferred
- Module Summary
-
Chapter 22 : Adding Authentication to React Apps
- Module Introduction
- How Authentication Works
- Project Setup and Route Setup
- Working with Query Parameters
- Implementing the Auth Action
- Validating User Input and Outputting Validation Errors
- Adding User Login
- Attaching Auth Tokens to Outgoing Requests
- Adding User Logout
- Updating the UI Based on Auth Status
- Adding Route Protection
- Adding Automatic Logout
- Managing the Token Expiration
- Chapter 23 : Deploying React Apps
-
Chapter 24 : An Introduction to Next.js
- Module Introduction
- What Is NextJS?
- Key Feature 1: Built-In Server-Side Rendering (Improved SEO)
- Key Feature 2: Simplified Routing with File-Based Routing
- Key Feature 3: Build Fullstack Apps
- Creating a New Next.js Project and App
- Analyzing the Created Project
- Adding First Pages
- Adding Nested Paths and Pages (Nested Routes)
- Creating Dynamic Pages (With Parameters)
- Extracting Dynamic Parameter Values
- Linking Between Pages
- Onward to a Bigger Project
- Preparing the Project Pages
- Outputting a List of Meetups
- Adding the New Meetup Form
- The "_app.js" File and Layout Wrapper
- Using Programmatic (Imperative) Navigation
- Adding Custom Components and CSS Modules
- How Pre-Rendering Works and Which Problem We Face
- Data Fetching for Static Pages
- Static Site Generation (SSG)
- Exploring Server-side Rendering (SSR) with "getServerSideProps"
- Working with Params for SSG Data Fetching
- Preparing Paths with "getStaticPaths" and Working with Fallback Pages
- Introducing API Routes
- Working with MongoDB
- Sending HTTP Requests to Our API Routes
- Getting Data from the Database
- Getting Meetup Details Data and Preparing Pages
- Adding "head" Metadata
- Deploying Next.js Projects
- Using Fallback Pages and Redeploying
- Summary
-
Chapter 25 : Animating React Apps
- Module Introduction
- Preparing the Demo Project
- Using CSS Transitions
- Using CSS Animations
- CSS Transition and Animations Limitations
- Using ReactTransitionGroup
- Using the Transition Component
- Wrapping the Transition Component
- Animation Timings
- Transition Events
- The CSSTransition Component
- Customizing CSS Classnames
- Animating Lists
- Alternative Animation Packages
- Wrap Up
-
Chapter 26 : Replacing Redux with React Hooks
- Module Introduction
- Starting Project and Why You Would Replace Redux
- Alternative: Using the Context API
- Toggling Favorites with the Context API
- Context API Summary
- Getting Started with a Custom Hook as a Store
- Finishing the Store Hook
- Creating a Concrete Store
- Using the Custom Store
- Custom Hook Store Summary
- Optimizing the Custom Hook Store
- Wrap Up
-
Chapter 27 : Testing React Apps
- Module Introduction
- What and Why?
- Understanding Different Kinds of Tests
- What to Test and How to Test
- Understanding the Technical Setup and Involved Tools
- Running the First Test
- Writing Our First Test
- Grouping Tests Together with Test Suites
- Testing User Interaction and State
- Testing Connected Components
- Testing Asynchronous Code
- Working with Mocks
- Summary and Further Resources
-
Chapter 28 : React and TypeScript
- Module Introduction
- What and Why?
- Installing and Using TypeScript
- Exploring the Base Types
- Working with Array and Object Types
- Understanding Type Inference
- Using Union Types
- Understanding Type Aliases
- Functions and Function Types
- Diving into Generics
- Creating a React + TypeScript Project
- Working with Components and TypeScript
- Working with Props and TypeScript
- Adding a Data Model
- Time to Practice: Exercise Time!
- Form Submissions in TypeScript Projects
- Working with refs and useRef()
- Working with "Function Props"
- Managing State and TypeScript
- Adding Styling
- Time to Practice: Removing a Todo
- The Context API and TypeScript
- Summary
- Bonus: Exploring tsconfig.json
-
Chapter 29 : Optional: React Hooks Introduction and Summary
- Module Introduction
- What Are React Hooks?
- The Starting Project
- Getting Started with useState()
- More on useState() and State Updating
- Array Destructuring
- Multiple States
- Rules of Hooks
- Passing State Data Across Components
- Time to Practice: Hooks Basics - Problem
- Time to Practice: Hooks Basics - Solution
- Sending HTTP Requests
- useEffect() and Loading Data
- Understanding useEffect() Dependencies
- More on useEffect()
- What's useCallback()?
- Working with Refs and useRef()
- Cleaning Up with useEffect()
- Deleting Ingredients
- Loading Errors and State Batching
- Understanding useReducer()
- Using useReducer() for the HTTP State
- Working with useContext()
- Performance Optimizations with useMemo()
- Getting Started with Custom Hooks
- Sharing Data Between Custom Hooks and Components
- Using the Custom Hook
- Wrap Up
-
Chapter 30 : Optional: React Summary and Core Feature Walkthrough
- Module Introduction
- What Is React and Why Would You Use It?
- React Projects - Requirements
- Creating React Projects
- Our Starting Project
- Understanding How React Works
- Building a First Custom Component
- Outputting Dynamic Values
- Reusing Components
- Passing Data to Components with Props
- CSS Styling and CSS Modules
- Exercise and Another Component
- Preparing the App for State Management
- Adding Event Listeners
- Working with State
- Lifting State Up
- The Special "children" Prop
- State and Conditional Content
- Adding a Shared Header and More State Management
- Adding Form Buttons
- Handling Form Submission
- Updating State Based on Previous State
- Outputting List Data
- Adding a Backend to the React SPA
- Sending a POST HTTP Request
- Handling Side Effects with useEffect()
- Handle Loading State
- Understanding and Adding Routing
- Adding Routes
- Working with Layout Routes
- Refactoring Route Components and More Nesting
- Linking and Navigating
- Data Fetching through loader()s
- Submitting Data with action()s
- Dynamic Routes
- Module Summary
- Chapter 31 : Course Roundup
Product information
- Title: React - The Complete Guide (Includes Hooks, React Router, and Redux) - Second Edition
- Author(s):
- Release date: April 2022
- Publisher(s): Packt Publishing
- ISBN: 9781801812603
You might also like
video
React - The Complete Guide (incl. Hooks, React Router and Redux)
Learn React or dive deeper into it. Learn the theory, solve assignments, practice on demo projects …
video
The Complete Node.js Developer Course (3rd Edition)
This course was just completely re-filmed to give you everything you need to master Node.js in …
video
Complete Git Guide: Understand and Master Git and GitHub
Complete with practical activities, this comprehensive Git and GitHub guide will help you understand how Git …
video
Kubernetes for the Absolute Beginners - Hands-On
Starting from the fundamental concept of containers, the course gradually unfolds into a comprehensive guide on …