The Complete React Native + Hooks Course
Understand React Native with Hooks, Context, and React Navigation.
What you'll learn
- Create real-world native apps using React Native
- Understand the terminology and concepts of Redux
- Get up to speed with React design principles and methodologies
- Make truly reusable components that look great
- Prototype and deploy your own applications to the Apple and Google Play Stores
- Discover mobile design patterns used by experienced engineers
Course Content
Getting Started
- How to Get Help
- Course Overview!
- Boilerplate Download
- Trouble Installing?
- App Setup
- Making Changes
- Using iOS and Android Simulators
- Official Course Repo
Working with Content
- Overview of React Components
- Showing a Custom Component
- Common Questions and Answers
- Rules of JSX
- One Common Error
- JSX Exercise Overview
- JSX Solution
List Building - With Style!
- Building Lists
- The FlatList Element
- Rendering a FlatList
- Why a Key Property?
- Solving the Key Issue
- A Few Props Around FlatList
- Exercise Overview Exercise Solution
- Exercise Solution
Navigating Users Between Screens
- Button Types
- Buttons in Action
- Touchable Opacity in Action
- Navigating with React Navigation
- Destructuring Props
Building Reusable Components
- Component Reuse with Props
- Buttons in Action
- Exercise Solution
- Parent-Child Relationships
- Communicating from Parent to Child
- Images Download
- Showing Images
- Passing Images as Props
- Exercise Outline
- Exercise Solution
State Management in React Components
- State in Components
- Screen Boilerplate
- State in Action
- Notes on State
- App Overview
- Generating Random Colors
- Adding Random Colors
- Showing Colors with a FlatList
- The Position Property
- App Overview
- Coordinating State
- Passing Callbacks to Children
- Tying State Values Together
- Validating State Changes
- Reusable State Updates
- Introduction to Reducers
- Creating a Reducer
- Applying State with a Reducer
- Restoring Validation
- Community Convention in Reducers
- Exercise Solution
- Two Important Props
- Weird Things with Text and State
- Updating State
- Exercise Outline
- Exercise Solution
How to Handle Screen Layouts
- Layout with React Native
- Basics of Box Object Model
- AlignItems with Flex Flex Direction
- Justify Content
- Justify Content
- Flex Values
- Align Self on Children
- The Position Property
- Top, Bottom, Left, Right
- Absolute Fill Objects
- Applying Layout Systems
- Exercise Overview
- Exercise Solutions
Using Outside API's
- Configuring Axios
- Making the Request
- Error Handling
- Running an Initial Search
Making Hooks Reusable
- Incorrect Hook Name in Slide
- The UseEffect Hook
- Extracting Hook Logic
- Showing Search Results
- Grouping Results
- FlatList Rendering
Navigation with Parameters
- Showing a Single Result
- Showing Additional Info
- A Few More Styling Issues
- Hiding Scroll Bars
- Constraining View Elements
- Empty Elements
- Spacing on the Search Bar
- Reminder on Navigation
- Navigating from a Child Component
- The WithNavigation Helper
- Communicating Between Screens
- Fetching a Single Restaurant
- Showing a List of Images
- One Last Fix
Advanced State Management with Context
- App Overview
- Issues with Data
- React Navigation Fix
- Initial Setup
- Wrapping the Navigator
- Introduction to Context
- Adding Context
- Moving Data with Context
- Rendering a List of Posts
- Adding State in Context
- It Works!
- Opportunity for Improvement
- Updating with UseReducer
- Automating Context Creation
- More Automatic Context Creation
- A Bit of Styling
- Deleting Posts
- Updating the Reducer
- Navigation on Tap
- Retrieving Single Posts
- Adding a Creation Screen
- headerRight Deprecation in 'navigationOptions'
- Header Navigation
- Displaying a Form
- Saving a New Post
- Navigation on Save
- headerRight Deprecation in 'navigationOptions'
- The Edit Icon Link
- Communicating Info to Edit
- Initializing State from Context
- Extracting Form Logic
- Customizing OnSubmit
- Initial Form Values
- Default Props
- Editing Action Function
- Editing in a Reducer
- Navigating Backwards
Data API Sync
- Outside Data API
- Issues with Servers + React Native
- JSON Server and Ngrok Setup
- JSON Server REST Conventions
- Making a Request
- Remote Fetch of Posts
- Creating Posts with Post Requests
- Refetching on Navigate
- Deleting a Post
- Editing Posts
- App Wrapup
Building a Custom Express API
- App Overview
- Dependencies Setup
- Error Handling The Basics of Express
- MongoDB Setup
- Connecting to MongoDB
- Understanding the Signup Process
- Using Postman
- Defining a User Schema
- Creating and Saving a User
- JSON Web Tokens
- Creating a JWT
- Wiring Up JSON Web Tokens
- Understanding Password Hashing
- Salting and Hashing
- Testing Signup and Signin
- Defining Tracks
- Listing Tracks
- Creating Tracks
In-App Authentication
- Server Code
- Navigation Design
- React Navigation Fix
- A LOT of BoilerplateFix
- MongoDB Setup
- Navigator Hookup
- Testing the Navigation Flow
- Helper Styling Components
- navigationOptions Deprecation Warning
- Styling Odds and Ends
- Input Props
- The Auth Context
- What's the Context Doing?
- Axios Setup
- Making an API Request
- Handling Errored Requests
- Async Storage
- Storing the Token
- Navigation From Outside of React
- Oops, Typo
- Navigation to Signin
- Extracting Form Logic
- Last Bit of Extracting
- Last Bit of Extracting
- Creating a NavLink
- Last Bit of Extracting
- navigationOptions Deprecation
- Real Component Reuse!
- Wiring Up Signin
- onWillFocus vs onWillBlur Update
- Clearing Error Messages
- Automatic Signin
- Empty Screens While Resolving Auth
- Signing Out a User
- Safe Area Views
- Working on Track Create
- Installing React Native Maps
- Showing a Map
- Drawing a Series of Points
- Notes on Location
- Fix for Missing Location Request Error
- Requesting Location Permissions
- Resetting Permissions
- How to Test Location?
- Faking the Users Location
- Reading a Location
- Bugginess with Location
- Location Architecture
- Location Context
- Live Location Updates
- Drawing a Position Indicator
- Disabling Location Tracking
- Automatic Disables
- Building a Track Form
- Updates to Location Context
- Track Form Wire Up
- Buggy UseEffects
- Understanding Stale References
- Some Errors You May See
- Kind of Fixed
- The UseCallback Hook
- Cleaning Up After Ourselves
- Avoiding Stale References
- Tracking While Recording
- Bring Back the Polyline
- What Manages Tracks
- Coordination Between Contexts
- Automatic Authentication
- Form Reset and Navigation
- Fetching Created Tracks
- Listing All Tracks
- Navigating to a Saved Track
- Showing Track Details
- Fixing Odds and Ends
Quick Note
- Note on the Following Videos
Window Setup without Expo
- Windows Setup of React Native
- Android Studio and React Native CLI Installation
- Emulator Creation and System Variables
- ESLint Setup with VSCode
Next Steps
- Join the #FlutterBrew Contest!
- Keep Learning!
- Publish Your Apps!
- Tip from Fash- Review your goals!
- Feedback Time!
Onwards
- Troubleshooting React Native Installs
- Project Directory Walkthrough
- Getting Content on the Screen
- Creating a Component with JSX
- Registering a Component
- Destructuring Imports
- Application Outline
- The Header Component
- Consuming File Exports
Making Great Looking App
- Troubleshooting React Native Installs
- Project Directory Walkthrough
- Getting Content on the Screen
- Creating a Component with JSX
- Registering a Component
- Destructuring Imports
- Application Outline
- The Header Component
- Consuming File Exports
HTTP Requests with React Native
- Sourcing Album Data
- List Component Boilerplate
- Class Based Components
- Lifecycle Methods
- Quick Note On Axios
- Network Requests
- Component Level State
- More on Component Level State
- Rendering a List of Components
- Displaying Individual Albums
- Fantastic Reusable Components - The Card
- Styling a Card
- Passing Components as Props
- Dividing Cards into Sections
Handling Component Layout
- Mastering Layout with Flexbox
- Positioning of Elements on Mobile
- More on Styling
- Lifecycle Methods
- Making Content Scrollable
- Handling User Input with Buttons
- Styling of Buttons with UX Considerations
- Responding to User Input
- Linking Between Mobile Apps
- Setting Button Text by Props
- App Wrapup
Authentication with Firebase
- Auth App Introduction
- A Common Root Component
- Copying Reusable Components
- What is Firebase?
- Firebase Client Setup
- Login Form Scaffolding
- Handling User Inputs
- Responding to User Input
- More on Handling User Inputs
- How to Create Controlled Components
- Making Text Inputs From Scratch
- A Focus on Passing Props
- Making the Input Pretty
- Wrapping up Inputs
- Password Inputs
Processing Authentication Credentials
- Logging a User In
- Error Handling
- More on Authentication Flow
- Creating an Activity Spinner
- Conditional Rendering of JSX
- Handling Authentication Events
- Handling User Inputs
- Responding to User Input
- More on Conditional Rendering
- Logging a User Out and Wrapup
Digging Deeper with Redux
- App Mockup and Approach
- The Basics of Redux
- More on Redux
- Redux is Hard!
- Application Boilerplate
- More on Redux Boilerplate
- Handling User Inputs
- Responding to User Input
- More on Handling User Inputs
- How to Create Controlled Components
Back to React
- Rendering the Header
- Reducer and State Design
- Library List of Data
- JSON CopyPaste
- The Connect Function
- MapStateToProps with Connect
- A Quick Review and Breather
Rendering the list Right way
- The Theory of ListView
- ListView in Practice
- Styling the List
- Creating the Selection Reducer
- Introducing Action Creators
- MapStateToProps with Connect
- Calling Action Creators
- Adding a Touchable
- Rules of Reducers
- Expanding a Row
- Moving Logic Out of Components
- Animations
- Wrapup
Not Done Yet
- Overview of Our Next App
- App Challenges
- Quick Note
- Just a Touch More Setup
- More on Boilerplate Setup
Requirement
- All you need is basic understanding of Javascript