Урок 1.00:01:02
How to Get Help
Урок 2.00:07:57
Let's Build an App!
Урок 3.00:05:50
Critical Questions
Урок 4.00:08:52
A Few More Critical Questions
Урок 5.00:01:59
Node Setup
Урок 6.00:02:39
Creating a React Project
Урок 7.00:05:51
What is Create React App?
Урок 8.00:06:42
Showing Basic Content
Урок 9.00:05:49
What is JSX?
Урок 10.00:04:30
Printing JavaScript Variables in JSX
Урок 11.00:01:52
Shorthand JS Expressions
Урок 12.00:00:43
Exercise Overview
Урок 13.00:02:06
Exercise Solution
Урок 14.00:01:59
Typical Component Layouts
Урок 15.00:07:37
Customizing Elements with Props
Урок 16.00:05:08
Converting HTML to JSX
Урок 17.00:06:14
Applying Styling in JSX
Урок 18.00:02:06
Exercise Solution
Урок 19.00:04:27
Extracting Components
Урок 20.00:16:07
Module Systems Overview
Урок 21.00:05:38
Project Overview
Урок 22.00:05:01
Creating Core Components
Урок 23.00:04:52
Introducing the Props System
Урок 24.00:06:07
Picturing the Movement of Data
Урок 25.00:03:05
Adding Props
Урок 26.00:04:58
Using Argument Destructuring
Урок 27.00:01:32
Exercise Solution
Урок 28.00:02:38
The React Developer Tools
Урок 29.00:04:44
The Most Common Props Mistake
Урок 30.00:08:10
Including Images
Урок 31.00:06:40
Handling Image Accessibility
Урок 32.00:06:11
Review on how CSS Works
Урок 33.00:05:58
Adding CSS Libraries with NPM
Урок 34.00:09:39
A Big Pile of HTML!
Урок 35.00:05:46
Last Bit of Styling
Урок 36.00:02:53
App Overview
Урок 37.00:05:10
Initial App Setup
Урок 38.00:03:16
Introducing the Event System
Урок 39.00:08:12
Events in Detail
Урок 40.00:06:43
Variations on Event Handlers
Урок 41.00:01:16
Exercise Solution
Урок 42.00:03:44
Introducing the State System
Урок 43.00:08:44
More on State
Урок 44.00:08:11
Understanding the Re-Rendering Process
Урок 45.00:08:43
Why Array Destructuring?
Урок 46.00:03:34
Back to the App
Урок 47.00:07:12
Picking a Random Element
Урок 48.00:09:47
List Building in React
Урок 49.00:05:51
Loading and Showing SVGs
Урок 50.00:05:52
Increasing Image Size
Урок 51.00:06:22
Adding Custom CSS
Урок 52.00:05:59
Finalizing Styling
Урок 53.00:08:53
App Wrapup and Review
Урок 54.00:02:25
App Overview
Урок 55.00:05:54
Project Setup
Урок 56.00:04:07
The Path Forward
Урок 57.00:11:17
Overview of HTTP Requests
Урок 58.00:06:08
Understanding the API
Урок 59.00:10:37
Making an HTTP Request
Урок 60.00:02:40
[Optional] Using Async:Await
Урок 61.00:03:21
Data Fetching Cleanup
Урок 62.00:08:43
Thinking About Data Flow
Урок 63.00:06:08
Child to Parent Communication
Урок 64.00:07:30
Implementing Child to Parent Communication
Урок 65.00:11:33
Handling Form Submission
Урок 66.00:09:22
Handling Input Elements
Урок 67.00:14:22
[Optional] OK But Why?
Урок 68.00:02:36
Exercise Solution
Урок 69.00:04:07
Running the Search
Урок 70.00:03:01
Reminder on Async:Await
Урок 71.00:12:32
Communicating the List of Images Down
Урок 72.00:05:04
Building a List of Images
Урок 73.00:09:11
Handling List Updates
Урок 74.00:09:23
Notes on Keys
Урок 75.00:01:49
Displaying Images
Урок 76.00:04:27
A Touch of Styling
Урок 77.00:03:42
App Wrapup
Урок 78.00:03:21
App Overview
Урок 79.00:05:57
Initial Setup
Урок 80.00:05:15
State Location
Урок 81.00:04:52
Reminder on Event Handlers
Урок 82.00:08:56
Receiving New Titles
Урок 83.00:02:13
Adding Styling
Урок 84.00:10:26
Updating State
Урок 85.00:04:27
Don't Mutate That State!
Урок 86.00:01:25
[Optional] Adding Elements to the Start or End
Урок 87.00:02:10
[Optional] Exercise Solution
Урок 88.00:04:44
[Optional] Inserting Elements
Урок 89.00:02:10
[Optional] Exercise Solution
Урок 90.00:07:05
[Optional] Removing Elements
Урок 91.00:02:10
[Optional] Exercise Solution
Урок 92.00:06:06
[Optional] Modifying Elements
Урок 93.00:07:11
[Super Optional] Why the Special Syntax?
Урок 94.00:02:27
[Optional] Exercise Solution
Урок 95.00:03:59
[Optional] Adding, Changing, or Removing Object Properties
Урок 96.00:01:50
Adding a Book, For Real!
Урок 97.00:02:06
Generating Random ID's
Урок 98.00:05:36
Displaying the List
Урок 99.00:06:37
Deleting Records
Урок 100.00:06:32
Toggling Form Display
Урок 101.00:07:07
Default Form Values
Урок 102.00:08:45
Updating the Title
Урок 103.00:05:07
Closing the Form on Submit
Урок 104.00:04:31
A Better Solution!
Урок 105.00:03:19
Collapsing Two Handlers into One
Урок 106.00:07:59
Adding Images
Урок 107.00:07:49
Adding Data Persistence
Урок 108.00:03:45
Server Setup
Урок 109.00:04:37
What Just Happened?
Урок 110.00:05:21
How the API Works
Урок 111.00:05:07
Introducing the REST Client
Урок 112.00:06:59
Using the REST Client
Урок 113.00:06:57
Creating a New Record
Урок 114.00:04:26
Fetching a List of Records
Урок 115.00:02:52
Introducing useEffect
Урок 116.00:06:25
useEffect in Action
Урок 117.00:09:53
More on useEffect
Урок 118.00:03:19
Updating a Record
Урок 119.00:05:28
Thinking About Updates
Урок 120.00:01:19
Deleting a Record
Урок 121.00:09:13
Introducing Context
Урок 122.00:06:16
Context in Action
Урок 123.00:06:52
Changing Context Values
Урок 124.00:08:47
More on Changing Context
Урок 125.00:11:52
Application vs Component State
Урок 126.00:04:39
Refactoring to Use Context
Урок 127.00:05:33
Refactoring the App
Урок 128.00:06:13
Reminder on Sharing with Context
Урок 129.00:03:09
Props and Context Together
Урок 130.00:05:57
Last Bit of Refactoring
Урок 131.00:09:54
A Small Taste of Reusable Hooks
Урок 132.00:08:07
Return to useEffect
Урок 133.00:07:18
Understanding the Issue
Урок 134.00:06:24
Applying the Fix
Урок 135.00:10:58
ESLint is Good, but be Careful!
Урок 136.00:13:09
Stable References with useCallback
Урок 137.00:02:09
Fixing Bugs with useCallback
Урок 138.00:05:34
useEffect Cleanup Functions
Урок 139.00:05:38
The Purpose of Cleanup Functions
Урок 140.00:04:26
Project Overview
Урок 141.00:01:55
Project Setup
Урок 142.00:08:20
Some Button Theory
Урок 143.00:03:49
Underlying Elements
Урок 144.00:04:22
The Children Prop
Урок 145.00:06:22
Props Design
Урок 146.00:08:30
Validating Props with PropTypes
Урок 147.00:06:53
PropTypes in Action
Урок 148.00:06:38
Introducing TailwindCSS
Урок 149.00:04:51
Installing Tailwind
Урок 150.00:06:36
How to use Tailwind
Урок 151.00:10:23
Review on Styling
Урок 152.00:11:29
The ClassNames Library
Урок 153.00:05:56
Building Some Variations
Урок 154.00:06:08
Finalizing the Variations
Урок 155.00:09:50
Using Icons in React Projects
Урок 156.00:07:17
Issues with Event Handlers
Урок 157.00:06:08
Passing Props Through
Урок 158.00:05:18
Handling the Special ClassName Case
Урок 159.00:10:44
Project Organization
Урок 160.00:05:57
Refactoring with Organization
Урок 161.00:04:49
Component Overview
Урок 162.00:03:43
Component Setup
Урок 163.00:04:05
Reminder on Building Lists
Урок 164.00:29:31
State Design Process Overview
Урок 165.00:04:10
Finding the Expanded Item
Урок 166.00:06:26
Conditional Rendering
Урок 167.00:10:01
Inline Event Handlers
Урок 168.00:08:22
Variation on Event Handlers
Урок 169.00:02:15
Conditional Icon Rendering
Урок 170.00:01:46
Displaying Icons
Урок 171.00:03:49
Adding Styling
Урок 172.00:02:08
Toggling Panel Collapse
Урок 173.00:08:35
[Optional] Delayed State Updates
Урок 174.00:11:44
[Optional] Functional State Updates
Урок 175.00:01:27
Exercise Solution
Урок 176.00:01:09
Component Overview
Урок 177.00:05:50
Designing the Props
Урок 178.00:04:15
Component Creation
Урок 179.00:20:12
[Optional] More State Design
Урок 180.00:06:46
Finally... Implementation!
Урок 181.00:04:48
Reminder on Event Handlers in Maps
Урок 182.00:04:46
Dropdown as a Controlled Component
Урок 183.00:05:37
Controlled Component Implementation
Урок 184.00:04:31
Existence Check Helper
Урок 185.00:06:35
Community Convention with Props Names
Урок 186.00:01:38
Exercise Solution
Урок 187.00:05:34
Adding Styling
Урок 188.00:07:08
The Panel Component
Урок 189.00:06:00
Creating the Reusable Panel
Урок 190.00:05:20
A Challenging Extra Feature
Урок 191.00:02:47
Document-Wide Click Handlers
Урок 192.00:06:15
Event Capture and Bubbling
Урок 193.00:02:21
Putting it All Together
Урок 194.00:14:35
Why a Capture Phase Handler?
Урок 195.00:03:53
Reminder on the useEffect Function
Урок 196.00:05:47
Reminder on useEffect Cleanup
Урок 197.00:02:57
Issues with Element References
Урок 198.00:05:06
useRef in Action
Урок 199.00:03:15
Checking Click Location
Урок 200.00:09:34
Traditional Browser Navigation
Урок 201.00:07:57
Theory of Navigation in React
Урок 202.00:02:44
Extracting the DropdownPage
Урок 203.00:05:34
Answering Critical Questions
Урок 204.00:02:57
The PushState Function
Урок 205.00:02:29
Handling Link Clicks
Урок 206.00:06:24
Handling Back:Forward Buttons
Урок 207.00:04:06
Navigation Context
Урок 208.00:06:20
Listening to Forward and Back Clicks
Урок 209.00:05:37
Programmatic Navigation
Урок 210.00:05:26
A Link Component
Урок 211.00:05:50
A Route Component
Урок 212.00:02:53
Handling Control and Command Keys
Урок 213.00:01:19
Link Styling
Урок 214.00:02:56
Custom Navigation Hook
Урок 215.00:08:23
Adding a Sidebar Component
Урок 216.00:07:26
Highlighting the Active Link
Урок 217.00:01:55
Navigation Wrapup
Урок 218.00:04:22
Modal Component Overview
Урок 219.00:05:50
Toggling Visibility
Урок 220.00:03:06
At First Glance, Easy!
Урок 221.00:09:27
We're Lucky it Works At All!
Урок 222.00:07:10
Fixing the Modal with Portals
Урок 223.00:02:05
Closing the Modal
Урок 224.00:05:04
Customizing the Modal
Урок 225.00:01:45
Additional Styling
Урок 226.00:01:54
One Small Bug
Урок 227.00:05:49
Modal Wrapup
Урок 228.00:03:35
Creating a Reusable table
Урок 229.00:03:04
Communicating Data to the Table
Урок 230.00:04:26
Reminder on Table HTML Structure
Урок 231.00:02:53
Building the Rows
Урок 232.00:03:39
Better Styling
Урок 233.00:05:11
Done! But It's Not Reusable
Урок 234.00:02:30
Here's the Idea
Урок 235.00:04:47
Dynamic Table Headers
Урок 236.00:05:19
Rendering Individual Cells
Урок 237.00:05:01
Fixed Cell Values
Урок 238.00:04:36
Nested Maps
Урок 239.00:00:58
Fixing the Color
Урок 240.00:04:13
Adding a Key Function
Урок 241.00:06:39
Adding Sorting to the Table
Урок 242.00:06:25
Reminder on Sorting in JavaScript
Урок 243.00:02:47
Sorting Strings
Урок 244.00:03:58
Sorting Objects
Урок 245.00:07:39
Object Sort Implementation
Урок 246.00:04:27
Reversing Sort Order
Урок 247.00:04:11
Optional Sorting
Урок 248.00:03:15
A Small Extra Feature
Урок 249.00:03:50
Customizing Header Cells
Урок 250.00:05:59
React Fragments
Урок 251.00:10:40
The Big Reveal
Урок 252.00:11:33
Adding SortableTable
Урок 253.00:01:44
Watching for Header Cell Clicks
Урок 254.00:06:58
Quick State Design
Урок 255.00:05:25
Adding Sort State
Урок 256.00:11:01
Yessssss, It Worked!
Урок 257.00:05:09
Determining Icon Set
Урок 258.00:03:38
Styling Header Cells
Урок 259.00:02:56
Resetting Sort Order
Урок 260.00:03:54
Table Wrapup
Урок 261.00:03:40
Exploring Code Reuse
Урок 262.00:03:11
Revisiting Custom Hooks
Урок 263.00:04:47
Creating the Demo Component
Урок 264.00:03:17
Custom Hook Creation
Урок 265.00:09:43
Hook Creation Process in Depth
Урок 266.00:11:10
Making a Reusable Sorting Hook
Урок 267.00:03:04
App Overview
Урок 268.00:04:27
Adding the Form
Урок 269.00:06:59
More on the Form
Урок 270.00:09:48
useReducer in Action
Урок 271.00:09:23
Rules of Reducer Functions
Урок 272.00:10:47
Understanding Action Objects
Урок 273.00:06:36
Constant Action Types
Урок 274.00:05:35
Refactoring to a Switch
Урок 275.00:06:21
Adding New State Updates
Урок 276.00:09:52
A Few Design Considerations Around Reducers
Урок 277.00:05:00
Introducing Immer
Урок 278.00:03:22
Immer in Action
Урок 279.00:05:24
Into the World of Redux
Урок 280.00:09:18
Redux vs Redux Toolkit
Урок 281.00:03:04
App Overview
Урок 282.00:03:33
The Path Forward
Урок 283.00:04:42
Implementation Time!
Урок 284.00:09:22
Understanding the Store
Урок 285.00:03:33
The Store's Initial State
Урок 286.00:07:51
Understanding Slices
Урок 287.00:06:34
Understanding Action Creators
Урок 288.00:04:25
Connecting React to Redux
Урок 289.00:08:26
Updating State from a Component
Урок 290.00:06:35
Accessing State in a Component
Урок 291.00:07:13
Removing Content
Урок 292.00:06:56
Practice Updating State!
Урок 293.00:02:03
Practice Accessing State!
Урок 294.00:04:30
Even More State Updating!
Урок 295.00:06:26
Resetting State
Урок 296.00:04:48
Multiple State Updates
Урок 297.00:06:46
Understanding Action Flow
Урок 298.00:05:12
Watching for Other Actions
Урок 299.00:03:08
Getting an Action Creator's Type
Урок 300.00:09:32
Manual Action Creation
Урок 301.00:08:42
File and Folder Structure
Урок 302.00:11:08
Refactoring the Project Structure
Урок 303.00:04:11
Project Overview
Урок 304.00:06:09
Adding Component Boilerplate
Урок 305.00:07:55
Thinking About Derived State
Урок 306.00:05:18
Thinking About Redux Design
Урок 307.00:05:35
Adding the Form Slice
Урок 308.00:09:41
Maintaining a Collection with a Slice
Урок 309.00:04:34
Creating the Store
Урок 310.00:08:45
Form Values to Update State
Урок 311.00:05:18
Receiving the Cost
Урок 312.00:04:32
Dispatching During the Form Submission
Урок 313.00:07:19
Awkward Double Keys
Урок 314.00:03:26
Listing the Records
Урок 315.00:02:17
Deleting Records
Урок 316.00:01:29
Adding Styling
Урок 317.00:03:22
Form Reset on Submission
Урок 318.00:02:24
Reminder on ExtraReducers
Урок 319.00:05:37
Adding a Searching Input
Урок 320.00:05:08
Derived State in useSelector
Урок 321.00:06:23
Total Car Cost
Урок 322.00:06:31
Highlighting Existing Cars
Урок 323.00:08:37
App Overview
Урок 324.00:02:46
Adding a Few Dependencies
Урок 325.00:02:10
Initial App Boilerplate
Урок 326.00:02:52
API Server Setup
Урок 327.00:03:14
Adding a Few Components
Урок 328.00:05:35
Creating the Redux Store
Урок 329.00:09:20
Thinking About Data Structuring
Урок 330.00:01:56
Reminder on Request Conventions
Урок 331.00:02:38
Data Fetching Techniques
Урок 332.00:06:53
Adding State for Data Loading
Урок 333.00:04:15
Understanding Async Thunks
Урок 334.00:07:47
Steps for Adding a Thunk
Урок 335.00:13:18
More on Adding Thunks
Урок 336.00:05:24
Wrapping up the Thunk
Урок 337.00:04:31
Using Loading State
Урок 338.00:03:28
Adding a Pause for Testing
Урок 339.00:05:40
Adding a Skeleton Loader
Урок 340.00:12:03
Animations with TailwindCSS
Урок 341.00:03:17
Rendering the List of Users
Урок 342.00:12:08
Creating New Users
Урок 343.00:06:04
Unexpected Loading State
Урок 344.00:07:36
Strategies for Fine-Grained Loading State
Урок 345.00:10:08
Local Fine-Grained Loading State
Урок 346.00:02:56
More on Loading State
Урок 347.00:05:04
Handling Errors with User Creation
Урок 348.00:11:35
Creating a Reusable Thunk Hook
Урок 349.00:05:43
Creating a Fetch-Aware Button Component
Урок 350.00:03:42
Better Skeleton Display
Урок 351.00:04:57
A Thunk to Delete a User
Урок 352.00:04:29
Updating the Slice
Урок 353.00:03:33
Refactoring the Component
Урок 354.00:04:47
Deleting the User
Урок 355.00:05:14
Fixing a Delete Error
Урок 356.00:04:49
Album Feature Overview
Урок 357.00:07:22
Additional Components
Урок 358.00:04:52
Adding the ExpandablePanel
Урок 359.00:04:01
Wrapping Up the ExpandablePanel
Урок 360.00:02:44
Adding the Albums Listing
Урок 361.00:02:48
[Optional] Getting Caught Up
Урок 362.00:08:01
Introducing Redux Toolkit Query
Урок 363.00:06:21
Creating a RTK Query API
Урок 364.00:14:02
Creating an Endpoint
Урок 365.00:11:02
Using the Generated Hook
Урок 366.00:05:57
A Few Immediate Notes
Урок 367.00:04:26
Rendering the List
Урок 368.00:08:43
Changing Data with Mutations
Урок 369.00:03:14
Differences Between Queries and Mutations
Урок 370.00:06:19
Options for Refetching Data
Урок 371.00:03:51
Request De-Duplication
Урок 372.00:06:15
Some Internals of Redux Toolkit Query
Урок 373.00:07:34
Refetching with Tags
Урок 374.00:09:14
Fine-Grained Tag Validation
Урок 375.00:03:21
Styling Fixups
Урок 376.00:03:22
Adding a Pause for Testing
Урок 377.00:05:35
Implementing Delete Endpoints
Урок 378.00:04:47
Refactoring the List
Урок 379.00:07:43
Remove Implementation
Урок 380.00:05:59
Easy Tag Invalidation
Урок 381.00:06:25
Getting Clever with Cache Tags
Урок 382.00:04:48
More Clever Tag Implementation
Урок 383.00:04:12
Photos Feature Overview
Урок 384.00:06:02
Lots of Photos Setup!
Урок 385.00:12:39
Adding the Endpoints
Урок 386.00:04:38
Creating the Photo
Урок 387.00:05:15
Showing the List of Photos
Урок 388.00:06:20
Adding Mouse-Over Deletes
Урок 389.00:08:36
Adding Automatic Data Refetching
I believe there're 536 videos if I weren't wrong. I used this script written by myself:
// Click on `more sections if available` & start counting
var moreSections = document.querySelector('button[data-purpose="show-more"]')
if(moreSections!=null) moreSections.click()
document.querySelectorAll('div[class^="section--panel"] li use[*|href="#icon-play"]').length