Note About This Legacy Course
What is JSX? / Converting HTML
Inline Styling / Converting Styling
Class vs. ClassName / Referencing JS Variables
Important Note About Viewing Errors
Three Tenants of Components / App Overview
IMPORTANT Info About Faker Installation
Getting Some Free Styling / Naive Component Approach
Specifying Images / Duplicating a Single Component
Extracting JSX / Component Nesting
React Props System / Passing and Receiving Props
Component Reuse / Implementing an Approval Card
Showing Custom Children / Component Reuse
Application Overview / Scaffolding the App
Getting a User's Physical Location / Resetting Geolocation Preferences
Handling Async Operations / Refactoring to Class Components
Rules of State / Initializing State Through Constructors
Updating State Properties / App Lifecycle Walkthrough
Handling Errors Gracefully / Conditionally Rendering Content
Introducing Lifecycle Methods / Why Lifecycle Methods
Refactoring Data Loading / Alternate State initialization
Ternary Expressions in JSX / Showing Icons
Extracting Options to Config Objects / Adding Some Styling
Showing a Loading Spinner / Specifying Default Props
Avoiding Conditionals in Render / Breather and Review
App Overview / Component Design
Adding Some Project Structure / Showing Forms
Adding a Touch of Styling / Creating Event Handlers
Alternate Event Handlers / Uncontrolled vs Controlled Elements
More on Controlled Elements / Handling Form Submittal
Understanding "this" in JS / Solving Context Issues
Communicating Child to Parent / Invoking Callbacks in Children
Fetching Data / Axios vs. Fetch
Viewing Request Results / Handling Requests with Async Await
Setting State After Async Requests / Binding Callbacks
Rendering Lists / Review of Map Statements
Rendering Lists of Components / Purpose of Keys
Implementing Keys in Lists
Grid CSS / Issues with Grid CSS
Creating an ImageCard Component / Accessing the DOM with Refs
Accessing Image Height / Callbacks on Image Load
Dynamic Spans / App Review
App Overview / Component Design
Scaffolding the App / Reminder on Event Handlers
Handling Form Submittal / Accessing the YouTube API
Searching for Videos / Putting it All Together
Updating State with Fetched Data / Passing State as Props
Rendering a List of Videos / Rendering Video Thumbnails
Styling a List / Communicating from Children to Parent
Deeply Nested Callbacks / Conditional Rendering
Styling the VideoDetail / Displaying a Video Player
Fixing a few Warnings / Defaulting Video Selection
React Hooks / App Architecture
Communicating the Items Prop / Building and Styling the Accordion
Helper Functions / Introducing useState
Understanding useState / Setter Functions
Expanding the Accordion / Creating Additional Widgets
Search Widget Architecture / Scaffolding the Widget
Text Inputs with Hooks / When do We Search
useEffect Hook / Testing Execution
Async Code in useEffect / Executing the Request from useEffect
Default Search Terms / List Building
XSS Attacks in React / Linking to a Wikipedia Page
Only Search with a Term / Throttling API Requests
Reminder on setTimeout / useEffect's Cleanup Function
Implementing a Delayed Request / Searching on Initial Render
Edge Case When Clearing Out Input Form
Fixing a Warning / Dropdown Architecture
Scaffolding the Dropdown / A Lot of JSX
Selection State / Filtering the Option List
Hiding and Showing the Option List / Why is this Hard?
React v17 Update - capture: true
Reminder on Event Bubbling / Applying What We've Learned
Binding an Event Handler / Why Stay Open
Important Update for Event Listeners
Which Element was Clicked / Making use of useRef
Body Event Listener Cleanup / Translate Widget
Scaffolding the Translate Component / Adding the Language Input
Understanding the Convert Component / Building the Convert Component
Using the Google Translate API / Displaying Translated Text
Debouncing Translation Updates / Navigation in React
Basic Component Routing / Building Reusable Route Component
Implementing Header for Navigation / Handling Navigation
Building a Link / Changing the URL
Detecting Navigation / Updating the Route
Project Overview / Refactoring the SearchBar
Refactoring the App / Removing a Callback
Overview of Custom Hooks / Process for Building Custom Hooks
Extracting Video Logic / Using the Custom Hook
Deployment Overview / Deployment with Vercel
Introduction to Redux / Redux by Analogy
A Bit More Analogy / Finishing the Analogy
Mapping the Analogy to Redux / Modeling with Redux
Creating Reducers / Rules of Reducers
Testing Our Example / Important Redux Notes
Integrating React with Redux / React Redux and React-Redux
Design of the Redux App / How React-Redux Works
Redux Project Structure / Named vs Default Exports
Building Reducers / Wiring up the Provider
Connect Function / Configuring Connect with mapStateToProps
Building a List with Redux Data / Calling Action Creators
Redux is Not Magic / Functional Components with Connect
App Overview / Initial App Setup
Tricking Redux with Dummy Reducers / A Touch More Setup
How to Fetch Data in a Redux App / Wiring Up Action Creators
Making a Request from an Action Creator / Understanding Async Action Creators
Behind the Scenes of Redux Thunk / Shortened Syntax with Redux Thunk
Rules of Reducers / Return Values from Reducers
Argument Values in Reducers / Pure Reducers
Mutations in JavaScript / Equality of Arrays and Objects
A Misleading Rule / Safe State Updates in Reducers
Switch Statements in Reducers / Dispatching Correct Values
List Building / Displaying Users
Fetching Singular Records / Displaying the User Header
Finding Relevant Users / Extracting Logic with mapStateToProps
That's the Issue / Memoizing Functions
Memoizing Issues / One Time Memoization
Alternate Overfetching Solution / Action Creators in Action Creators
Finding Unique User IDs / Quick Refactor with Chain
App Outline / Mockups in Detail
App Challenges / Initial Setup
IMPORTANT - React Router Installation Update
Introducing React Router / How React Router Works
How Paths Get Matched / How Now to Navigate with React Router
Navigating with React Router / Different Router Types
Component Scaffolding / Wiring Up Routes
Always Visible Components / Wiring Up the Header
OAuth Based Authentication / OAuth for Servers vs Browser Apps
Creating OAuth Credentials / Wiring Up the Google API Library
Required plugin_name Parameter - Do Not Skip
Sending a User into the OAuth Flow / Rendering Auth Status
Updating Auth State / Displaying Sign In and Sign Out Buttons
On Demand Sign In and Sign Out / Redux Architecture
Redux Setup / Connecting Auth Action Creators
Building the Auth Reducers / Handling Auth Status Through Redux
Fixed Action Types / Recording the User's ID
Redux Dev Tools / Debug Sessions with Redux Dev Tools
Important Note about Redux Form Installation
Forms with Redux Form / Useful Redux Form Examples
Connecting Redux Form / Creating Forms with Redux Form
Automatically Handling Events / Customizing Form Fields
Handling Form Submission / Validation of Form Inputs
Displaying Validation Messages / Showing Errors on Touch
Highlighted Errored Fields
Creating Streams / RESTful Conventions
Setting Up an API Server / Creating Streams Through Action Creators
Creating a Stream with REST Conventions / Dispatching Actions
Key Interpolation Syntax / Handling Fetching Creating and Updating
Deleting Properties with Omit / Merging Lists of Records
Fetching a List of Streams / Rendering All Streams
Associating Streams with Users / Conditionally Showing Edit and Delete
Linking to Stream Creation / When to Navigate Users
History Object Deprecation
History References / Creating a Browser History Object
Implementing Programmatic Navigation / Manually Changing API Records
URL Based Selection / Wildcard Navigation
More on Route Params / Pulling Streams Out of State
Selecting Records from State / Component Isolation with React Router
Fetching a Stream for Edit Stream / Real Code Reuse
Refactoring Stream Creation / Setting Initial Values
Avoiding Changes to Properties / Edit Form Submission
Why Use Portals / More on Using Portals
Creating a Portal / Hiding a Modal
Making the Modal Reusable / React Fragments
onDismiss From the Parent / Reminder on Path Params
Fetching the Deletion Stream / Conditionally Showing Stream Details
Viewing a Stream / Switches with React Router
RTMP NodeMediaServer is not a constructor error fix
Showing a Stream / RTMP Server Setup
Video Player Setup / Implementing FLV.js
Creating a FLV Player / Optional Player Building
It works! / Cleaning up Resources with componentWillUnmount
Context System / An App with Context
App Generation / Selecting a Language
A Touch More Setup / Getting Data Into and Out of Context
Creating Context Objects / Consuming the Context Value
Context Provider / Gotchas Around Providers
Accessing Data With Consumers / Pulling From Multiple Contexts
Replacing Redux with Context / Creating a Store Component
Implementing a Language Store / Rendering the Language Store
Connecting the Selector to the Store / Connecting the Field and Button