Course Overview
This bestselling course by the author of "React Key Concepts" has turned more students into ReactJS developers than any other courses - more than 1,000,000 and counting!
-
Fully updated for React 19!
-
A Course For Busy Customers & Business Professionals!
This course also comes with two paths which you can take: The "complete" path (full >40h course) and the "summary" (fast-track) path (~4h summary module) - you can choose the path that best fits your time requirements!
React.js is THE most popular JavaScript library you can use and learn these days to build modern, reactive user interfaces for the web.
This course teaches you React in-depth, from the ground up, step by step by diving into all the core basics, exploring tons of examples and also introducing you to advanced concepts as well.
You'll get all the theory, tons of examples and demos, assignments and exercises and tons of important knowledge that is skipped by most other resources - after all, there is a reason why this course is that huge! :)
And in case you don't even know why you would want to learn React and you're just here because of some ad or "the algorithm" - no worries: ReactJS is a key technology as a web developer and in this course I will also explain WHY it's that important!
Welcome to "React - The Complete Guide"!
This course will teach you React.js in a practice-oriented way, using all the latest patterns and best practices you need. You will learn all the key fundamentals as well as advanced concepts and related topics to turn you into a React.js developer.
This is a huge course because it really covers EVERYTHING you need to know and learn to become a React.js developer!
No matter if you know nothing about React or if you already got some basic React knowledge (not required but also not a problem), you will get tons of useful information and knowledge out of this course!
My goal with this course is to ensure that you feel confident working with React, so that you can apply for React jobs, use it in your own projects or simply enhance your portfolio as a developer - whatever your goal is: This course gets you there!
I kept this course updated since its initial launch to ensure that you always learn React in the best possible and up-do-date way!
What's in this course?
A thorough introduction to React.js (What is it and why would you use it?)
All the core basics: How React works, building components with React & building UIs with React
Components, props & dynamic data binding
Working with user events and state to create interactive applications
A (thorough) look behind the scenes to understand how React works under the hood
Detailed explanations on how to work with lists and conditional content
React Hooks (in-depth)!
Working with built-in Hooks and building custom Hooks
How to debug React apps
Styling React apps with "Styled Components" and "CSS Modules"
Working with "Fragments" & "Portals"
Dealing with side effects
Class-based components and functional components
Sending Http requests & handling transitional states + responses
Handling forms and user input (incl. validation)
Using React Form Actions
Redux & Redux Toolkit
Routing with React Router
Understanding React Server Components
An in-depth introduction into Next.js
Deploying React Apps
Implementing Authentication
Unit Tests
Combining React with TypeScript
Adding Animations
Tons of examples and demo projects so that you can apply all the things you learned in real projects
And so much more - check out the full curriculum on this page!
This really is the "Complete Guide" - promised!
And best of all?
You don't need any prior React knowledge!
This course starts with zero knowledge assumed! All you need is basic web development and JavaScript knowledge (though the course even includes a brief JavaScript refresher to ensure that we're all on the same page!).
Check out the full curriculum, the free preview videos and join the course risk-free thanks to the 30-day money-back guarantee!
FAQ
FAQ area empty
Course curriculum
-
Welcome To The Course!
67 Xem trước -
What is React.js? And Why Would You Use It?
178 Xem trước -
ReactJS vs "Vanilla JavaScript": Why Use React?
657 Xem trước -
Editing Our First React App
262 -
About This Course & Course Outline
175 -
The Two Ways (Paths) Of Taking This Course
188 Xem trước -
Getting The Most Out Of This Course
324 Xem trước -
Join our Online Learning Community
Xem trước -
Creating React Projects
430 Xem trước -
Why Do You Need A Special Project Setup?
171
-
Module Introduction
109 -
Starting Project
60 -
Adding JavaScript To A Page & How React Projects Differ
417 -
React Projects Use a Build Process
484 -
"import" & "export"
724 -
Revisiting Variables & Values
421 -
Revisiting Operators
153 -
Revisiting Functions & Parameters
494 -
Exercise: Working with Functions
0 -
Arrow Functions
131 -
More on the Arrow Function Syntax
-
Revisiting Objects & Classes
367 -
Arrays & Array Methods like map()
670 -
Exercise: Array Methods
0 -
Destructuring
316 -
Destructuring in Function Parameter Lists
-
The Spread Operator
193 -
Revisiting Control Structures
328 -
Manipulating the DOM - Not With React!
52 -
Using Functions as Values
441 -
Defining Functions Inside Of Functions
115 -
Reference vs Primitive Values
284 -
Next-Gen JavaScript - Summary
-
JS Array Functions
-
Module Resources
-
Module Introduction
108 -
It's All About Components! [Core Concept]
367 -
Setting Up The Starting Project
186 -
JSX & React Components [Core Concept]
282 -
Creating & Using a First Custom Component
352 -
A Closer Look: Components & File Extensions
-
Building & Using a Component
0 -
How React Handles Components & How It Builds A "Component Tree" [Core Concept]
501 -
Components & JSX
-
Using & Outputting Dynamic Values [Core Concept]
360 -
Setting HTML Attributes Dynamically & Loading Image Files
281 -
Outputting Dynamic Content
0 -
Making Components Reusable with Props [Core Concept]
546 -
Alternative Props Syntaxes
404 -
More Prop Syntaxes
-
Working with Props
0 -
Dynamic Values & Props
-
Best Practice: Storing Components in Files & Using a Good Project Structure
391 -
Storing Component Style Files Next To Components
375 -
Component Composition: The special "children" Prop [Core Concept]
486 -
Component Composition
0 -
Reacting to Events [Core Concept]
405 -
Passing Functions as Values to Props
403 -
Reacting to Events
0 -
Passing Custom Arguments to Event Functions
336 -
Configuring Event Handlers
0 -
Best Practices & Event Handling
-
How NOT to Update the UI - A Look Behind The Scenes of React [Core Concept]
329 -
Managing State & Using Hooks [Core Concept]
628 -
Working with State
0 -
Deriving & Outputting Data Based on State
290 -
State & Computed Values
-
Rendering Content Conditionally
483 -
Conditional Content
0 -
CSS Styling & Dynamic Styling
312 -
Dynamic Styling
0 -
Outputting List Data Dynamically
460 -
Dynamic List Content
0 -
Conditional Content & Dynamic Lists
-
Essentials Summary Slides
-
Module Summary
365
-
Module Introduction
86 -
You Don't Have To Use JSX!
277 -
Working with Fragments
340 -
Using Fragments
0 -
When Should You Split Components?
194 -
Splitting Components By Feature & State
414 -
Problem: Props Are Not Forwarded To Inner Elements
404 -
Forwarding Props To Wrapped Elements
226 -
Forwarding Props
0 -
Working with Multiple JSX Slots
522 -
Setting Component Types Dynamically
524 -
Setting Default Prop Values
129 -
Creating Flexible Components
0 -
Onwards To The Next Project & Advanced Concepts
136 -
Not All Content Must Go Into Components
310 -
Closer Look: public/ vs assets/ for Image Storage
-
New Project: First Steps Towards Our Tic-Tac-Toe Game
238 -
Concept Repetition: Splitting Components & Building Reusable Components
253 -
Concept Repetition: Working with State
477 -
Component Instances Work In Isolation!
123 -
Conditional Content & A Suboptimal Way Of Updating State
294 -
Best Practice: Updating State Based On Old State Correctly
424 -
User Input & Two-Way-Binding
462 -
Two-Way-Binding
0 -
Rendering Multi-Dimensional Lists
460 -
Best Practice: Updating Object State Immutably
524 -
Lifting State Up [Core Concept]
579 -
Avoid Intersecting States!
322 -
Prefer Computed Values & Avoid Unnecessary State Management
377 -
Deriving State From Props
442 -
Sharing State Across Components
252 -
Reducing State Management & Identifying Unnecessary State
352 -
Disabling Buttons Conditionally
157 -
Outsourcing Data Into A Separate File
268 -
Lifting Computed Values Up
319 -
Deriving Computed Values From Other Computed Values
329 -
Tic-Tac-Toe Game: The "Game Over" Screen & Checking for a Draw
340 -
Why Immutability Matters - Always!
328 -
When NOT To Lift State Up
319 -
An Alternative To Lifting State Up
196 -
Final Polishing & Improving Components
315 -
Summary Slides
-
Module Introduction & A Challenge For You!
309 -
Adding a Header Component
288 -
Getting Started with a User Input Component
307 -
Handling Events & Using Two-Way-Binding
628 -
Lifting State Up
539 -
Computing Values & Properly Handling Number Values
341 -
Outputting Results in a List & Deriving More Values
542 -
Outputting Content Conditionally
263
-
Module Introduction & Starting Project
237 -
Splitting CSS Code Across Multiple Files
202 -
Styling React Apps with Vanilla CSS - Pros & Cons
152 -
Vanilla CSS Styles Are NOT Scoped To Components!
211 -
Styling React Apps with Inline Styles
384 -
Dynamic & Conditional Inline Styles
207 -
Dynamic Styling with Inline Styles
0 -
Dynamic & Conditional Styling with CSS Files & CSS Classes
341 -
Dynamic Styling with CSS Classes
0 -
Scoping CSS Rules with CSS Modules
591 -
Introducing "Styled Components" (Third-party Package)
483 -
Creating Flexible Components with Styled Components
287 -
Dynamic & Conditional Styling with Styled Components
667 -
Styled Components: Pseudo Selectors, Nested Rules & Media Queries
435 -
Creating Reusable Components & Component Combinations
593 -
Introducing Tailwind CSS For React App Styling
686 -
Tailwind 3 vs 4
-
Adding & Using Tailwind CSS In A React Project
219 -
Tailwind: Media Queries & Pseudo Selectors
322 -
Dynamic & Conditional Styling with Tailwind
350 -
Migrating The Demo App to Tailwind CSS
255 -
Tailwind CSS: Pros & Cons
266 -
Exercise: Dynamic Styles
0
-
Module Introduction & Starting Project
199 -
Repetition: Managing User Input with State (Two-Way-Binding)
317 -
Repetition: Fragments
-
Introducing Refs: Connecting & Accessing HTML Elements via Refs
364 -
Manipulating the DOM via Refs
134 -
Accessing DOM Elements with "refs"
0 -
Refs vs State Values
285 -
Adding Challenges to the Demo Project
289 -
Setting Timers & Managing State
296 -
Using Refs for More Than "DOM Element Connections"
510 -
Managing Other Values with Refs
0 -
Adding a Modal Component
399 -
Forwarding Refs to Custom Components
388 -
Forwarding Refs
0 -
Exposing Component APIs via the useImperativeHandle Hook
503 -
Exposing Component APIs
0 -
More Examples: When To Use Refs & State
530 -
Sharing State Across Components
298 -
Enhancing the Demo App "Result Modal"
132 -
Closing the Modal via the ESC (Escape) Key
-
Introducing & Understanding "Portals"
415 -
Working with Portals
0
-
Module Introduction & Starting Project
191 -
Adding a "Projects Sidebar" Component
149 -
Styling the Sidebar & Button with Tailwind CSS
300 -
Adding the "New Project" Component & A Reusable "Input" Component
358 -
Styling Buttons & Inputs with Tailwind CSS
423 -
Splitting Components to Split JSX & Tailwind Styles (for Higher Reusability)
409 -
Managing State to Switch Between Components
499 -
Collecting User Input with Refs & Forwarded Refs
813 -
Handling Project Creation & Updating the UI
360 -
Validating User Input & Showing an Error Modal via useImperativeHandle
684 -
Styling the Modal via Tailwind CSS
346 -
Making Projects Selectable & Viewing Project Details
922 -
Handling Project Deletion
284 -
Adding "Project Tasks" & A Tasks Component
351 -
Managing Tasks & Understanding Prop Drilling
923 -
Clearing Tasks & Fixing Minor Bugs
400
-
Module Introduction
114 -
Understanding Prop Drilling & Project Overview
358 -
Prop Drilling: Component Composition as a Solution
317 -
Introducing the Context API
137 -
Creating & Providing The Context
510 -
Consuming the Context
523 -
Linking the Context to State
447 -
A Different Way Of Consuming Context
301 -
What Happens When Context Values Change?
85 -
Migrating the Entire Demo Project to use the Context API
380 -
Outsourcing Context & State Into a Separate Provider Component
365 -
Creating & Using Context
0 -
Introducing the useReducer Hook
606 -
Dispatching Actions & Editing State with useReducer
614 -
Using useReducer()
0
-
Module Introduction & Starting Project
242 -
What's a "Side Effect"? A Thorough Example
442 -
A Potential Problem with Side Effects: An Infinite Loop
168 -
Using useEffect for Handling (Some) Side Effects
331 -
Not All Side Effects Need useEffect
478 -
UseEffect Not Needed: Another Example
510 -
Preparing Another Use-Case For useEffect
251 -
Using useEffect for Syncing With Browser APIs
249 -
Understanding Effect Dependencies
180 -
Fixing a Small Bug
-
Preparing Another Problem That Can Be Fixed with useEffect
294 -
Introducing useEffect's Cleanup Function
289 -
The Problem with Object & Function Dependencies
489 -
The useCallback Hook
228 -
UseEffect's Cleanup Function: Another Example
451 -
Optimizing State Updates
224
-
Module Introduction & Starting Project
141 -
A First Component & Some State
423 -
Deriving Values, Outputting Questions & Registering Answers
773 -
Shuffling Answers & Adding Quiz Logic
417 -
Adding Question Timers
700 -
Working with Effect Dependencies & useCallback
434 -
Using Effect Cleanup Functions & Using Keys for Resetting Components
473 -
Highlighting Selected Answers & Managing More State
694 -
Splitting Components Up To Solve Problems
1063 -
Moving Logic To Components That Actually Need It ("Moving State Down")
766 -
Setting Different Timers Based On The Selected Answer
487 -
Outputting Quiz Results
909
-
Module Introduction
76 -
React Builds A Component Tree / How React Works Behind The Scenes
521 -
Analyzing Component Function Executions via React's DevTools Profiler
357 -
Avoiding Component Function Executions with memo()
483 -
Avoiding Component Function Executions with Clever Structuring
366 -
Understanding the useCallback() Hook
425 -
Understanding the useMemo() Hook
358 -
React Uses A Virtual DOM - Time To Explore It!
435 -
Why Keys Matter When Managing State!
716 -
More Reasons For Why Keys Matter
174 -
Using Keys For Resetting Components
322 -
State Scheduling & Batching
349 -
Optimizing React with MillionJS
285
-
Module Introduction
130 -
What & Why
292 -
Adding a First Class-based Component
414 -
Working with State & Events
698 -
The Component Lifecycle (Class-based Components Only!)
320 -
Lifecycle Methods In Action
706 -
Class-based Components & Context
293 -
Class-based vs Functional Components: A Summary
162 -
Introducing Error Boundaries
592 -
Module Resources
-
Module Introduction
173 -
How (Not) To Connect To A Database
380 -
Starting Project & Dummy Backend API
205 -
Preparing the App For Data Fetching
347 -
How NOT To Send HTTP Requests (And Why It's Wrong)
384 -
Sending HTTP Requests (GET Request) via useEffect
239 -
Using async / await
145 -
Handling Loading States
327 -
Importing from Error.jsx
-
Handling HTTP Errors
556 -
Transforming Fetched Data
331 -
Extracting Code & Improving Code Structure
173 -
Sending Data with POST Requests
720 -
Using Optimistic Updating
453 -
Deleting Data (via DELETE HTTP Requests)
223 -
Practice: Fetching Data
433
-
Module Introduction & Starting Project
127 -
Revisiting the "Rules of Hooks" & Why To Use Hooks
371 -
Creating a Custom Hook
332 -
Custom Hook: Managing State & Returning State Values
650 -
Exposing Nested Functions From The Custom Hook
363 -
Using A Custom Hook in Multiple Components
265 -
Creating Flexible Custom Hooks
299
-
Module Introduction & Starting Project
124 -
What Are Forms & What's Tricky About Them?
239 -
Handling Form Submission
691 -
Managing & Getting User Input via State & Generic Handlers
672 -
Getting User Input via Refs
275 -
Getting Values via FormData & Native Browser APIs
543 -
Resetting Forms
278 -
Validating Input on Every Keystroke via State
418 -
Validating Input Upon Lost Focus (Blur)
473 -
Validating Input Upon Form Submission
474 -
Validating Input via Built-in Validation Props
299 -
Mixing Custom & Built-in Validation Logic
268 -
Building & Using a Reusable Input Component
605 -
Outsourcing Validation Logic
202 -
Creating a Custom useInput Hook
911 -
Using Third-Party Form Libraries
91
-
Module Introduction
168 -
What are Form Actions?
407 -
Adding Validation Checks
470 -
Managing Form-dependent State with useActionState()
741 -
Using User Input
604 -
Moving the Action Function out of the Component
154 -
A Demo App: Introduction
206 -
Handling Form Submission
580 -
Working with Asynchronous Form Actions
383 -
Updating the UI with useFormStatus()
306 -
Registering Multiple Form Actions
272 -
Sending an HTTP Request via a Form Action
326 -
Using the "pending" State from useActionState()
227 -
Adding Optimistic Updating
587 -
Module Summary
177
-
Module Introduction & Starting Project
254 -
Planning the App & Adding a First Component
400 -
Fetching Meals Data (GET HTTP Request)
720 -
Adding a "MealItem" Component
459 -
Formatting & Outputting Numbers as Currency
171 -
Creating a Configurable & Flexible Custom Button Component
482 -
Getting Started with Cart Context & Reducer
1259 -
Finishing & Using the Cart Context & Reducer
1041 -
Adding a Reusable Modal Component with useEffect
449 -
Opening the Cart in the Modal via a New Context
1172 -
Working on the Cart Items
481 -
Adding a Custom Input Component & Managing Modal Visibility
1171 -
Handling Form Submission & Validation
410 -
Sending a POST Request with Order Data
455 -
Adding a Custom HTTP Hook & Avoiding Common Errors
1583 -
Handling HTTP Loading & Error States
192 -
Finishing Touches
847 -
Migrating To Form Actions
193 -
Managing Form Status with Form Actions
308
-
Module Introduction
65 -
Another Look At State In React Apps
314 -
Redux vs React Context
379 -
How Redux Works
348 -
MUST READ: Redux createStore() is (not) deprecated
-
Exploring The Core Redux Concepts
914 -
More Redux Basics
184 -
Preparing a new Project
119 -
Creating a Redux Store for React
294 -
Providing the Store
193 -
Using Redux Data in React Components
308 -
Dispatching Actions From Inside Components
213 -
Redux with Class-based Components
620 -
Attaching Payloads to Actions
255 -
Working with Multiple State Properties
379 -
How To Work With Redux State Correctly
307 -
Redux Challenges & Introducing Redux Toolkit
327 -
Adding State Slices
491 -
Connecting Redux Toolkit State
287 -
Migrating Everything To Redux Toolkit
379 -
Working with Multiple Slices
710 -
Reading & Dispatching From A New Slice
416 -
Splitting Our Code
303 -
Summary
233
-
Module Introduction
39 -
Redux & Side Effects (and Asynchronous Code)
207 -
Refresher / Practice: Part 1/2
1212 -
Refresher / Practice: Part 2/2
1080 -
Using Firebase as a Backend
-
Redux & Async Code
249 -
Frontend Code vs Backend Code
340 -
Where To Put Our Logic
539 -
Using useEffect with Redux
360 -
A Problem with useEffect()
-
Handling Http States & Feedback with Redux
769 -
Using an Action Creator Thunk
727 -
Getting Started with Fetching Data
519 -
Finalizing the Fetching Logic
316 -
Exploring the Redux DevTools
337 -
Summary
112
-
Module Introduction
201 -
Routing: Multiple Pages in Single-Page Applications
195 -
Project Setup & Installing React Router
185 -
Defining Routes
462 -
Adding a Second Route
127 -
Exploring an Alternative Way of Defining Routes
181 -
Navigating between Pages with Links
275 -
Layouts & Nested Routes
504 -
Showing Error Pages with errorElement
237 -
Working with Navigation Links (NavLink)
397 -
Navigating Programmatically
161 -
Defining & Using Dynamic Routes
464 -
Adding Links for Dynamic Routes
202 -
Understanding Relative & Absolute Paths
638 -
Working with Index Routes
115 -
Onwards to a new Project Setup
196 -
Time to Practice: Problem
85 -
Time to Practice: Solution
1396 -
Data Fetching with a loader()
455 -
Using Data From A Loader In The Route Component
171 -
More loader() Data Usage
197 -
Where Should loader() Code Be Stored?
138 -
When Are loader() Functions Executed?
168 -
Reflecting The Current Navigation State in the UI
173 -
Returning Responses in loader()s
241 -
Which Kind Of Code Goes Into loader()s?
74 -
Error Handling with Custom Errors
296 -
Extracting Error Data & Throwing Responses
384 -
The json() Utility Function
127 -
Dynamic Routes & loader()s
452 -
The useRouteLoaderData() Hook & Accessing Data From Other Routes
460 -
Planning Data Submission
142 -
Working with action() Functions
547 -
Submitting Data Programmatically
546 -
Updating the UI State Based on the Submission Status
242 -
Validating User Input & Outputting Validation Errors
417 -
Reusing Actions via Request Methods
475 -
Behind-the-Scenes Work with useFetcher()
550 -
Deferring Data Fetching with defer()
547 -
Defer() and json() with React Router v7
-
Controlling Which Data Should Be Deferred
442 -
Module Summary
176 -
Module Resources
-
Old Lectures
-
Module Introduction
70 -
How Authentication Works
547 -
Project Setup & Route Setup
226 -
Working with Query Parameters
455 -
Implementing the Auth Action
700 -
Validating User Input & Outputting Validation Errors
258 -
Adding User Login
115 -
Attaching Auth Tokens to Outgoing Requests
392 -
Adding User Logout
260 -
Updating the UI Based on Auth Status
365 -
Important: loader()s must return null or any other value
-
Adding Route Protection
166 -
Adding Automatic Logout
310 -
Managing the Token Expiration
448 -
Module Resources
-
Module Introduction
106 -
Project Setup & Overview
248 -
React Query: What & Why?
359 -
Installing & Using Tanstack Query - And Seeing Why It's Great!
992 -
Understanding & Configuring Query Behaviors - Cache & Stale Data
463 -
Dynamic Query Functions & Query Keys
785 -
The Query Configuration Object & Aborting Requests
327 -
Enabled & Disabled Queries
415 -
Changing Data with Mutations
689 -
Fetching More Data & Testing the Mutation
399 -
Acting on Mutation Success & Invalidating Queries
530 -
A Challenge! The Problem
134 -
A Challenge! The Solution
997 -
Disabling Automatic Refetching After Invalidations
162 -
Enhancing the Demo App & Repeating Mutation Concepts
558 -
React Query Advantages In Action
536 -
Updating Data with Mutations
289 -
Optimistic Updating
786 -
Using the Query Key As Query Function Input
467 -
React Query & React Router
1226
-
Module Introduction
120 -
Creating a NextJS Project
256 -
Understanding File-based Routing & React Server Components
165 -
Adding Another Route via the Filesystem
186 -
Navigating Between Pages
252 -
Working with Pages & Layouts
202 -
Reserved File Names, Custom Components & How To Organize A NextJS Project
391 -
Reserved Filenames
-
Configuring Dynamic Routes & Using Route Parameters
377 -
Onwards to the Main Project: The Foodies App
84 -
Exercise: Your Task
123 -
Exercise: Solution
499 -
Revisiting The Concept Of Layouts
230 -
Adding a Custom Component To A Layout
358 -
Styling NextJS Project: Your Options & Using CSS Modules
360 -
Optimizing Images with the NextJS Image Component
297 -
Using More Custom Components
228 -
Populating The Starting Page Content
258 -
Preparing an Image Slideshow
205 -
React Server Components vs Client Components - When To Use What
495 -
Using Client Components Efficiently
667 -
Outputting Meals Data & Images With Unknown Dimensions
631 -
Setting Up A SQLite Database
191 -
Fetching Data By Leveraging NextJS & Fullstack Capabilities
437 -
Adding A Loading Page
240 -
Using Suspense & Streamed Responses For Granular Loading State Management
354 -
Handling Errors
322 -
Handling "Not Found" States
117 -
Loading & Rendering Meal Details via Dynamic Routes & Route Parameters
663 -
Throwing Not Found Errors For Individual Meals
123 -
Getting Started with the "Share Meal" Form
113 -
Getting Started with a Custom Image Picker Input Component
508 -
Adding an Image Preview to the Picker
359 -
Improving the Image Picker Component
-
Introducing & Using Server Actions for Handling Form Submissions
542 -
Storing Server Actions in Separate Files
225 -
Creating a Slug & Sanitizing User Input for XSS Protection
200 -
Storing Uploaded Images & Storing Data in the Database
776 -
Managing the Form Submission Status with useFormStatus
330 -
Adding Server-Side Input Validation
354 -
Working with Server Action Responses & useFormState
485 -
Building For Production & Understanding NextJS Caching
366 -
Triggering Cache Revalidations
237 -
Don't Store Files Locally On The Filesystem!
133 -
Bonus: Storing Uploaded Images In The Cloud (AWS S3)
-
Adding Static Metadata
227 -
Adding Dynamic Metadata
140 -
Module Summary
265 -
About the NextJS Pages Router
175 -
Creating a NextJS Project
127 -
Analyzing the Created Project
172 -
Adding First Pages
365 -
Adding Nested Paths & Pages (Nested Routes)
227 -
Creating Dynamic Pages (with Parameters)
216 -
Extracting Dynamic Parameter Values
247 -
Linking Between Pages
433 -
Onwards to a bigger Project!
212 -
Preparing the Project Pages
222 -
Outputting a List of Meetups
303 -
Adding the New Meetup Form
234 -
The "_app.js" File & Layout Wrapper
377 -
Using Programmatic (Imperative) Navigation
227 -
Adding Custom Components & CSS Modules
600 -
How Pre-rendering Works & Which Problem We Face
352 -
Data Fetching for Static Pages
536 -
More on Static Site Generation (SSG)
344 -
Exploring Server-side Rendering (SSR) with "getServerSideProps"
387 -
Working with Params for SSG Data Fetching
314 -
Preparing Paths with "getStaticPaths" & Working With Fallback Pages
436 -
Introducing API Routes
380 -
Working with MongoDB
572 -
Sending Http Requests To Our API Routes
409 -
Getting Data From The Database
429 -
Getting Meetup Details Data & Preparing Pages
581 -
Adding "head" Metadata
559 -
Deploying Next.js Projects
746 -
Using Fallback Pages & Re-deploying
253 -
Summary
135 -
Module Resources
-
Module Introduction
108 -
Why We Need A Special Project Setup
254 -
Understanding React Server Components
436 -
Changing Server to Client Components
346 -
Combining Server and Client Components
352 -
Fetching Data with RSCs
219 -
Submitting Data with Server Actions
426 -
Using the use() Hook for Promises & Data Fetching
439 -
The use() Hook In Action
331 -
Handling Errors
228 -
Theory Wrap Up
62
-
Module Introduction
185 -
Project Setup & Overview
102 -
Animating with CSS Transitions
460 -
Animating with CSS Animations
338 -
Introducing Framer Motion
228 -
Framer Motion Basics & Fundamentals
509 -
Animating Between Conditional Values
253 -
Adding Entry Animations
268 -
Animating Element Disappearances / Removal
231 -
Making Elements "Pop" With Hover Animations
253 -
Reusing Animation States
208 -
Nested Animations & Variants
466 -
Animating Staggered Lists
268 -
Animating Colors & Working with Keyframes
243 -
Imperative Animations
448 -
Animating Layout Changes
214 -
Orchestrating Multi-Element Animations
605 -
Combining Animations With Layout Animations
235 -
Animating Shared Elements
255 -
Re-triggering Animations via Keys
292 -
Scroll-based Animations
944
-
Module Introduction
55 -
Project Overview
50 -
Introducing Compound Components
664 -
Managing Multi-Component State with the Context API
657 -
Grouping Compound Components
389 -
Adding Extra Components For Reusability & Configurability
516 -
Sharing Cross-Component State When Working With Compound Components
366 -
Introducing & Using Render Props
374 -
Adding Search To A React App
258 -
Implementing a Search Functionality With Help Of Render Props
258 -
Handling Keys Dynamically
162 -
Working with Debouncing
430
-
Module Introduction
61 -
React 18 & This Section
-
Starting Project & Why You Would Replace Redux
259 -
Alternative: Using the Context API
433 -
Toggling Favorites with the Context API
343 -
Context API Summary (and why NOT to use it instead of Redux)
150 -
Getting Started with a Custom Hook as a Store
491 -
Finishing the Store Hook
353 -
Creating a Concrete Store
251 -
Using the Custom Store
340 -
Custom Hook Store Summary
193 -
Optimizing the Custom Hook Store
244 -
Bonus: Managing Multiple State Slices with the Custom Store Hook
-
Wrap Up
120 -
Module Resources
-
Module Introduction
83 -
What & Why?
203 -
Understanding Different Kinds Of Tests
244 -
What To Test & How To Test
89 -
Understanding the Technical Setup & Involved Tools
159 -
Running a First Test
436 -
Writing Our First Test
614 -
Grouping Tests Together With Test Suites
134 -
Testing User Interaction & State
840 -
Testing Connected Components
199 -
Testing Asynchronous Code
551 -
Working With Mocks
510 -
Summary & Further Resources
227
-
Module Introduction
86 -
What & Why?
394 -
Installing & Using TypeScript
398 -
Exploring the Base Types
235 -
Working with Array & Object Types
333 -
Understanding Type Inference
167 -
Using Union Types
168 -
Understanding Type Aliases
162 -
Functions & Function Types
319 -
Diving Into Generics
481 -
A Closer Look At Generics
-
Creating a React + TypeScript Project
514 -
Working with Components & TypeScript
341 -
Working with Props & TypeScript
860 -
Adding a Data Model
549 -
Time to Practice: Exercise Time!
422 -
Form Submissions In TypeScript Projects
321 -
Working with refs & useRef
656 -
Working with "Function Props"
446 -
Managing State & TypeScript
313 -
Adding Styling
139 -
Time to Practice: Removing a Todo
567 -
The Context API & TypeScript
835 -
Summary
138 -
Bonus: Exploring tsconfig.json
346
-
Module Introduction
68 -
What Is React & Why Would You Use It?
337 -
React Projects - Requirements
129 -
Creating React Projects
207 -
Out Starting Project
208 -
Understanding How React Works
466 -
Building A First Custom Component
675 -
Outputting Dynamic Values
303 -
Reusing Components
360 -
Passing Data to Components with Props
375 -
CSS Styling & CSS Modules
607 -
Exercise & Another Component
391 -
Preparing the App For State Management
225 -
Adding Event Listeners
472 -
Working with State
600 -
Lifting State Up
548 -
The Special "children" Prop
441 -
State & Conditional Content
539 -
Adding a Shared Header & More State Management
471 -
Adding Form Buttons
214 -
Handling Form Submission
378 -
Updating State Based On Previous State
330 -
Outputting List Data
398 -
Adding a Backend to the React SPA
370 -
Sending a POST HTTP Request
252 -
Handling Side Effects with useEffect()
546 -
Handle Loading State
263 -
Understanding & Adding Routing
235 -
Adding Routes
336 -
Working with Layout Routes
248 -
Refactoring Route Components & More Nesting
335 -
Linking & Navigating
489 -
Data Fetching via loader()s
547 -
Submitting Data with action()s
667 -
Dynamic Routes
521 -
Module Summary
85 -
Module Resources
-
About these [BONUS / OPTIONAL] sections
-
Module Introduction
226 -
What Are Components? And Why Is React All About Them?
439 -
React Code Is Written In A "Declarative Way"!
225 -
Creating a new React Project
128 -
The Starting Project
-
Analyzing a Standard React Project
806 -
Introducing JSX
243 -
How React Works
271 -
Exercise: Working with JSX Code
0 -
Building a First Custom Component
558 -
Exercise: Building a First Component
0 -
Writing More Complex JSX Code
314 -
Adding Basic CSS Styling
297 -
Outputting Dynamic Data & Working with Expressions in JSX
514 -
Passing Data via "props"
784 -
Exercise: Passing Data via "props"
0 -
Alternative Ways of Passing & Receiving / Handling "props"
309 -
Adding "normal" JavaScript Logic to Components
370 -
Splitting Components Into Multiple Components
680 -
Time to Practice: React & Component Basics
-
The Concept of "Composition" ("children props")
813 -
Exercise: Component Composition
0 -
A First Summary
252 -
A Closer Look At JSX
568 -
Organizing Component Files
187 -
An Alternative Function Syntax
161 -
Learning Check: React Basics, Components, Props & JSX
-
Module Resources
-
Module Introduction
150 -
Listening to Events & Working with Event Handlers
601 -
Exercise: Listening to Events
0 -
How Component Functions Are Executed
351 -
Working with "State"
677 -
Exercise: Working with "State"
0 -
A Closer Look at the "useState" Hook
471 -
State can be updated in many ways!
-
Adding Form Inputs
621 -
Listening to User Input
326 -
Working with Multiple States
418 -
Using One State Instead (And What's Better)
302 -
Updating State That Depends On The Previous State
283 -
Exercise: Using State with Form Inputs
0 -
Exercise: Updating State Based On Older State
0 -
Alternative: Creating A Shared Handler Function
377 -
Handling Form Submission
302 -
Adding Two-Way Binding
181 -
Time to Practice: Working with Events & State
-
Child-to-Parent Component Communication (Bottom-up)
858 -
Lifting The State Up
428 -
Derived / Computed State
414 -
Controlled vs Uncontrolled Components & Stateless vs Stateful Components
333 -
Learning Check: Working with Events & State
-
Module Resources
-
Module Introduction
46 -
Rendering Lists of Data
449 -
Exercise: Rendering Lists of Data
0 -
Using Stateful Lists
285 -
Understanding "Keys"
432 -
Outputting Conditional Content
429 -
Exercise: Outputting Conditional Content
0 -
Adding Conditional Return Statements
339 -
Demo App: Adding a Chart
463 -
Adding Dynamic Styles
467 -
Wrap Up & Next Steps
687 -
Fixing a Small Bug
-
Learning Check: Outputting Lists & Conditional Content
-
Module Resources
-
Module Introduction
156 -
The First Practice Project & Your Tasks
388 -
Exercise Hints
-
Splitting the App Into Components
444 -
Handling Events
579 -
Managing State
599 -
Lifting the State Up
532 -
Outputting Results Conditionally
605 -
Adding CSS Modules
376 -
Fixing a Small Bug
-
Introducing the Second Project
177 -
Exercise Hints
-
Adding a "User" Component
426 -
Adding a re-usable "Card" Component
517 -
Adding a re-usable "Button" Component
230 -
Managing the User Input State
297 -
Adding Validation & Resetting Logic
274 -
Adding a Users List Component
645 -
Managing a List Of Users via State
567 -
Adding The "ErrorModal" Component
484 -
Managing the Error State
537 -
Module Resources
Requirment
-
JavaScript + HTML + CSS fundamentals are absolutely required
-
You DON'T need to be a JavaScript expert to succeed in this course!
-
ES6+ JavaScript knowledge is beneficial but not a must-have
-
NO prior React or any other JS framework experience is required!
Outcomes
-
Learn React from the ground up and finish the course as an advanced React developer
-
Build multiple high-quality demo apps, including a fullstack app built with NextJS
-
Join more than 900,000 students in this course & more than 3,000,000 students I taught across all my courses
-
Build fullstack React apps with NextJS 14+
-
Follow along locally or in a cloud development environment
-
Learn all about React Hooks and React Components
-
Manage complex state efficiently with React's Context API & React Redux
-
Build standalone React apps & applications connected to a backend via HTTP
-
Learn about routing & route-related data fetching with React Router
-
Implement user authentication in React apps
-
Get started with React Unit Testing
0 Student
4 Courses
0 review