React - The Complete Guide (incl Hooks, React Router, Redux)
Dive in and learn React.js from scratch! Learn Reactjs, Hooks, Redux, React Routing, Animations, Next.js and way more!
Start courseWhat's this course about?
Learn React or dive deeper into it. Learn the theory, solve assignments, practice in demo projects and build one big application which is improved throughout the course: The Burger Builder!
More details please!
JavaScript is the major driver of modern web applications since it's the only programming language which runs in the browser and hence allows you to provide highly reactive apps. You'll be able to achieve mobile-app like user experiences in the web.
But using JavaScript can be challenging - it quickly becomes overwhelming to create a nice web app with vanilla JavaScript and jQuery only.
React to the rescue!
React is all about components - basically custom HTML elements - with which you can quickly build amazing and powerful web apps. Just build a component once, configure it to your needs, dynamically pass data into it (or listen to your own events!) and re-use it as often as needed.
Need to display a list of users in your app? It's as simple as creating a "User" component and outputting it as often as needed.
This course will start at the very basics and explain what exactly React is and how you may use it (and for which kind of apps). Thereafter, we'll go all the way from basic to advanced. We'll not just scratch the surface but dive deeply into React as well as popular libraries like react-router and Redux.
By the end of the course, you can build amazing React (single page) applications!
A detailed list with the course content can be found below.
Who's teaching you in this course?
My name is Maximilian Schwarzmüller, I'm a freelance web developer and worked with React in many projects. I'm also a 5-star rated instructor here on Udemy. I cover React's most popular alternatives - Vue and Angular - as well as many other topics. I know what I'm talking about and I know where the pain points can be found.
It's my goal to get you started with React as quick as possible and ensure your success. But I don't just focus on students getting started. I want everyone to benefit from my courses, that's why we'll dive deeply into React and why I made sure to also share knowledge that's helpful to advanced React developers.
Is this course for you?
This course is for you if ...
- ...you're just getting started with frontend/ JavaScript development and only got the JS basics set (no prior React or other framework experience is required!)
- ...you're experienced with Angular or Vue but want to dive into React
- ...know the React basics but want to refresh them and/ or dive deeper
- ...already worked quite a bit with React but want to dive deeper and see it all come together in a bigger app
What's inside the course?
- The "What", "Why" and "How"
- React Basics (Base features, syntax and concepts)
- Managing state with class-based components and React Hooks
- How to output lists and conditional content
- Styling of React components
- A deep dive into the internals of React and advanced component features
- How to access Http content from within React apps (AJAX)
- Redux, Redux, Redux ... from basics to advanced!
- Forms and form validation in React apps
- Authentication
- An introduction to unit testing
- An introduction to Next.js
- React app deployment instructions
- ...and much more!
Course content
Section 1Getting Started
- Introduction1:49
- What is React?2:55
- Real-World SPAs & React Web Apps1:44
- Writing our First React Code15:07
- Join our Online Learning Community1:00
- Why Should we Choose React?2:03
- React Alternatives1:11
- Understanding Single Page Applications and Multi Page Applications3:38
- Course Outline7:28
- How to get the Most out of This Course2:29
- Useful Resources & Links1:00
Section 2Refreshing Next Generation JavaScript (Optional)
- Module IntroductionPremium1:35
- Understanding "let" and "const"Premium3:05
- Arrow FunctionsPremium5:27
- Exports and ImportsPremium4:43
- Understanding ClassesPremium4:37
- Classes, Properties and MethodsPremium3:03
- The Spread & Rest OperatorPremium6:30
- DestructuringPremium3:13
- Reference and Primitive Types RefresherPremium4:26
- Refreshing Array FunctionsPremium2:45
- Wrap UpPremium0:52
- Next-gen JavaScript SummaryPremium1:00
- JavaScript Array FunctionsPremium1:00
Section 3Understanding the Base Features & Syntax
- Module IntroductionPremium0:38
- The Build WorkflowPremium8:00
- Using Create React AppPremium6:09
- Understanding the Folder StructurePremium8:11
- Understanding Component BasicsPremium5:32
- Understanding JSXPremium5:38
- JSX RestrictionsPremium3:09
- Creating a Functional ComponentPremium8:09
- Working with Components & Re-Using ThemPremium1:47
- Outputting Dynamic ContentPremium3:02
- Working with PropsPremium4:07
- Understanding the "children" PropPremium2:56
- Understanding & Using StatePremium7:17
- Handling Events with MethodsPremium3:45
- Manipulating the StatePremium5:03
- Using the useState() Hook for State ManipulationPremium13:51
- Stateless vs Stateful ComponentsPremium3:08
- Passing Method References Between ComponentsPremium7:05
- Adding Two Way BindingPremium6:51
- Adding Styling with StylesheetsPremium5:28
- Working with Inline StylesPremium4:15
- Assignment: Basics (Problem)Premium4:35
- Assignment: Basics (Solution)Premium22:28
- Useful Resources & LinksPremium1:00
Section 4Working with Lists and Conditionals
- Module IntroductionPremium1:03
- Rendering Content ConditionallyPremium10:09
- Handling Dynamic Content "The JavaScript Way"Premium4:49
- Outputting Lists (Intro)Premium1:31
- Outputting ListsPremium5:32
- Lists & StatePremium4:12
- Updating State ImmutablyPremium2:39
- Lists & KeysPremium4:14
- Flexible ListsPremium7:34
- Wrap UpPremium1:55
- Assignment: Conditional Content & Lists (Problem)Premium5:25
- Assignment: Conditional Content & Lists (Solution)Premium17:16
- Useful Resources & LinksPremium1:00
Section 5Styling React Components & Elements
- Module IntroductionPremium1:19
- Outlining the Problem SetPremium1:58
- Setting Styles DynamicallyPremium3:19
- Setting Class Names DynamicallyPremium7:09
- Adding and Using RadiumPremium7:00
- Using Radium for Media QueriesPremium5:02
- Introducing Styled ComponentsPremium8:16
- More on Styled ComponentsPremium5:51
- Styled Components & Dynamic StylesPremium5:27
- Working with CSS ModulesPremium15:21
- CSS Modules & Media QueriesPremium3:15
- More on CSS ModulesPremium1:00
- Useful Resources & LinksPremium1:00
Section 6Debugging React Apps
- Module IntroductionPremium0:55
- Understanding Error MessagesPremium2:37
- Finding Logical Errors by using Dev Tools & SourcemapsPremium4:17
- Working with the React Developer ToolsPremium3:06
- Using Error Boundaries (React 16+)Premium8:13
- Wrap UpPremium0:56
- Useful Resources & LinksPremium1:00
Section 7Diving Deeper into Components & React Internals
- Module IntroductionPremium0:42
- A Better Project StructurePremium7:24
- Splitting an App Into ComponentsPremium15:54
- Comparing Stateless and Stateful ComponentsPremium3:46
- Class-based vs Functional ComponentsPremium5:15
- class Component Lifecycle OverviewPremium5:04
- Component Creation Lifecycle in ActionPremium6:46
- Component Update Lifecycle (for props Changes)Premium15:34
- Component Update Lifecycle (for state Changes)Premium3:49
- Using useEffect() in Functional ComponentsPremium3:46
- Controlling the useEffect() BehaviorPremium3:40
- Cleaning up with Lifecycle Hooks & useEffect()Premium6:48
- Cleanup Work with useEffect() - ExamplePremium1:37
- Using shouldComponentUpdate for OptimizationPremium6:45
- Optimizing Functional Components with React.memo()Premium3:39
- When should you optimize?Premium2:18
- PureComponents instead of shouldComponentUpdatePremium3:35
- How React Updates the DOMPremium4:27
- Rendering Adjacent JSX ElementsPremium9:00
- Must Read: Windows UsersPremium1:00
- Using React.FragmentPremium1:29
- Higher Order Components (HOC) - IntroductionPremium4:20
- Another Form of HOCsPremium5:56
- Passing Unknown PropsPremium4:58
- Setting State CorrectlyPremium5:13
- Using PropTypesPremium6:53
- Using RefsPremium7:37
- Refs with React HooksPremium4:34
- Understanding Prop Chain ProblemsPremium4:56
- Using the Context APIPremium10:03
- contextType & useContext()Premium5:33
- Wrap UpPremium1:21
- Useful Resources & LinksPremium1:00
Section 8A Real App: The Burger Builder (Basic Version)
- About React HooksPremium1:00
- Module IntroductionPremium0:57
- Planning an App in React - Core StepsPremium2:32
- Planning our App - Layout and Component TreePremium10:57
- Planning the StatePremium4:13
- Setting up the ProjectPremium5:01
- Creating a Layout ComponentPremium10:01
- Starting Implementation of The Burger Builder ContainerPremium5:04
- Adding a Dynamic Ingredient ComponentPremium8:27
- Adding Prop Type ValidationPremium2:49
- Starting the Burger ComponentPremium6:49
- Outputting Burger Ingredients DynamicallyPremium9:44
- Calculating the Ingredient Sum DynamicallyPremium5:10
- Adding the Build Control ComponentPremium7:26
- Outputting Multiple Build ControlsPremium4:03
- Connecting State to Build ControlsPremium8:22
- Removing Ingredients SafelyPremium7:30
- Displaying and Updating the Burger PricePremium2:28
- Adding the Order ButtonPremium10:39
- Creating the Order Summary ModalPremium13:58
- Showing & Hiding the Modal (with Animation!)Premium6:59
- Implementing the Backdrop ComponentPremium8:22
- Adding a Custom Button ComponentPremium4:46
- Implementing the Button ComponentPremium4:54
- Adding the Price to the Order SummaryPremium2:05
- Adding a ToolbarPremium9:11
- Using a Logo in our ApplicationPremium6:39
- Adding Reusable Navigation ItemsPremium11:26
- Creating a Responsive SidedrawerPremium7:44
- Working on Responsive AdjustmentsPremium4:34
- More about Responsive AdjustmentsPremium7:18
- Reusing the BackdropPremium9:11
- Adding a Sidedrawer Toggle ButtonPremium6:27
- Adding a Hamburger IconPremium2:20
- Improving the App - IntroductionPremium1:11
- Prop Type ValidationPremium1:17
- Improving PerformancePremium8:48
- Using Component Lifecycle MethodsPremium2:00
- Changing the Folder StructurePremium4:57
- Wrap UpPremium1:49
- Useful Resources & LinksPremium1:00
Section 9Reaching out to the Web (Http / Ajax)
- Module IntroductionPremium1:03
- Understanding Http Requests in ReactPremium1:35
- Understanding our Project and Introducing AxiosPremium4:15
- Creating a Http Request to GET DataPremium5:29
- Rendering Fetched Data to the ScreenPremium3:46
- Transforming DataPremium2:40
- Making a Post SelectablePremium4:01
- Fetching Data on Update (without Creating Infinite Loops)Premium7:56
- POSTing Data to the ServerPremium3:52
- Sending a DELETE RequestPremium2:23
- Fixing a BugPremium0:33
- Handling Errors LocallyPremium3:23
- Adding Interceptors to Execute Code GloballyPremium6:18
- Setting a Default Global Configuration for AxiosPremium3:10
- Creating and Using Axios InstancesPremium5:03
- Wrap UpPremium0:47
- Useful Resources & LinksPremium1:00
Section 10Burger Builder Project: Accessing a Server
- Module IntroductionPremium1:52
- Creating the Firebase ProjectPremium3:26
- Creating the Axios InstancePremium2:42
- Sending a POST RequestPremium7:46
- Displaying a Spinner while Sending a RequestPremium9:20
- Handling ErrorsPremium12:04
- Retrieving Data from the BackendPremium11:22
- Removing Old InterceptorsPremium8:24
- Useful Resources & LinksPremium1:00
Section 11Multi-Page-Feeling in a Single-Page-App: Routing
- Module IntroductionPremium0:51
- Routing and SPAsPremium2:43
- Setting Up LinksPremium4:22
- Setting Up the Router PackagePremium4:46
- Preparing the Project For RoutingPremium5:13
- Setting Up and Rendering RoutesPremium5:18
- Rendering Components for RoutesPremium1:57
- Switching Between PagesPremium2:17
- Using Links to Switch PagesPremium4:03
- Using Routing-Related PropsPremium3:12
- The "withRouter" HOC & Route PropsPremium3:44
- Absolute vs Relative PathsPremium2:34
- Styling the Active RoutePremium5:55
- Passing Route ParametersPremium6:54
- Extracting Route ParametersPremium3:03
- Parsing Query Parameters & the FragmentPremium1:00
- Using Switch to Load a Single RoutePremium3:33
- Navigating ProgrammaticallyPremium3:25
- Additional Information Regarding Active LinksPremium2:22
- Understanding Nested RoutesPremium7:55
- Creating Dynamic Nested RoutesPremium4:38
- Redirecting RequestsPremium2:45
- Conditional RedirectsPremium2:47
- Using the History Prop to Redirect (Replace)Premium2:49
- Working with GuardsPremium3:46
- Handling the 404 Case (Unknown Routes)Premium3:02
- Loading Routes LazilyPremium11:49
- Lazy Loading with React Suspense (16.6)Premium9:47
- Routing and Server DeploymentPremium4:19
- Assignment: Routing (Problem)Premium4:53
- Assignment: Routing (Solution)Premium29:11
- Wrap UpPremium0:49
- Useful Resources & LinksPremium1:00
Section 12Adding Routing to our Burger Project
- Module IntroductionPremium1:35
- Building the Checkout ContainerPremium11:32
- Setting Up Routing & RoutesvPremium4:41
- Navigating to the Checkout PagePremium4:50
- Navigating Back & To Next PagePremium3:33
- Passing Ingredients via Query ParamsPremium5:27
- Navigating to the Contact Data ComponentPremium9:33
- Order Submission & Passing Data Between PagesPremium11:44
- Adding an Orders PagePremium5:34
- Implementing Navigation LinksPremium5:35
- Fetching OrdersPremium6:03
- Outputting the OrdersPremium7:34
- Wrap UpPremium1:07
- Useful Resources & LinksPremium1:00
Section 13Forms and Form Validation
- Module IntroductionPremium0:49
- Analyzing the AppPremium1:49
- Creating a Custom Dynamic Input ComponentPremium11:30
- Setting Up a JS Config for the FormPremium7:34
- Dynamically Create Inputs based on JS ConfigPremium5:23
- Adding a Dropdown ComponentPremium3:52
- Handling User InputPremium7:43
- Handling Form SubmissionPremium4:11
- Adding Custom Form ValidationPremium8:09
- Fixing a Common Validation GotchaPremium1:18
- Adding Validation FeedbackPremium5:12
- Improving Visual FeedbackPremium2:18
- Handling Overall Form ValidityPremium7:35
- Working on an ErrorPremium1:26
- Fixing a BugPremium2:09
- Showing Error MessagesPremium1:00
- Useful Resources & LinksPremium1:00
Section 14Redux
- Module IntroductionPremium1:00
- Understanding StatePremium1:50
- The Complexity of Managing StatePremium2:42
- Understanding the Redux FlowPremium5:17
- Setting Up Reducer and StorePremium7:09
- Dispatching ActionsPremium6:44
- Adding SubscriptionsPremium2:47
- Connecting React to ReduxPremium3:39
- Connecting the Store to ReactPremium8:19
- Dispatching Actions from within the ComponentPremium5:53
- Assignment: Dispatching Actions (Problem)Premium1:41
- Assignment: Dispatching Actions (Solution)Premium4:15
- Passing and Retrieving Data with ActionPremium4:06
- Switch-Case in the ReducerPremium3:00
- Updating State ImmutablyPremium13:20
- Updating Arrays ImmutablyPremium8:39
- Immutable Update PatternsPremium1:00
- Outsourcing Action TypesPremium5:19
- Combining Multiple ReducersPremium10:18
- Understanding State TypesPremium4:50
- Assignment: Redux Basics (Problem)Premium1:45
- Assignment: Redux Basics (Solution)Premium14:23
- Combining Local UI State and ReduxPremium7:39
- Wrap UpPremium1:42
- Useful Resources & LinksPremium1:00
Section 15Adding Redux to our Project
- Module IntroductionPremium5:26
- Installing Redux and React ReduxPremium4:08
- Basic Redux SetupPremium2:10
- Finishing the Reducer for IngredientsPremium6:35
- Connecting the Burger Builder Container to our StorePremium9:33
- Working on the Total Price CalculationPremium6:05
- Redux & UI StatePremium4:08
- Adjusting Checkout and Contact DataPremium9:10
- Wrap UpPremium2:38
- Useful Resources & LinksPremium1:00
Section 16Redux Advanced
- Module IntroductionPremium0:28
- Adding MiddlewarePremium7:47
- Using the Redux DevtoolsPremium7:32
- Executing Asynchronous Code - IntroductionPremium1:52
- Introducing Action CreatorsPremium4:11
- Action Creators & Async CodePremium6:20
- Handling Asynchronous CodePremium8:13
- Restructuring ActionsPremium6:55
- Where to Put Data Transforming Logic?Premium5:42
- Using Action Creators and Get StatePremium3:27
- Using Utility FunctionsPremium7:20
- A Leaner Switch Case StatementPremium3:14
- An Alternative Folder StructurePremium2:22
- Diving Much DeeperPremium2:07
- Wrap UpPremium1:00
- Useful Resources & LinksPremium1:00
Section 17Redux Advanced: Burger Project
- Module IntroductionPremium1:12
- Installing the Redux DevtoolsPremium2:56
- Preparing the Folder StructurePremium3:06
- Creating Action CreatorsPremium6:15
- Executing Asynchronous CodePremium4:05
- Fetching Ingredients AsynchronouslyPremium7:50
- Initializing Ingredients in the BurgerBuilderPremium5:18
- Changing the Order of our Ingredients ManuallyPremium2:12
- Adding Order ActionsPremium6:40
- Connecting Contact Data Container & ActionsPremium4:18
- The Order ReducerPremium5:30
- Working on Order ActionsPremium4:28
- Redirect to Improve UXPremium3:08
- Combining ReducersPremium4:53
- Handling Purchases & Updating the UIPremium8:34
- Resetting the Price after PurchasesPremium1:44
- Fetching Orders (via Redux)Premium13:45
- Checking our Implemented FunctionalitiesPremium1:23
- Refactoring ReducersPremium8:11
- Refactoring Reducers ContinuedPremium7:55
- Wrap UpPremium0:57
- Useful Resources & LinksPremium1:00
Section 18Adding Authentication to our Burger Project
- Module IntroductionPremium1:14
- Understanding Authentication in Single Page ApplicationsPremium3:01
- Required App AdjustmentsPremium0:53
- Adding an Auth FormPremium13:11
- Adding ActionsPremium6:28
- Getting a Token from the BackendPremium6:59
- Adding Sign-InPremium5:30
- Storing the TokenPremium9:00
- Adding a SpinnerPremium6:03
- Logging Users OutPremium6:50
- Accessing Protected ResourcesPremium11:17
- Updating the UI Depending on Auth StatePremium7:32
- Adding a Logout LinkPremium6:52
- Forwarding Unauthenticated UsersPremium8:18
- Redirecting the User to the Checkout PagePremium13:12
- Persistent Auth State with localStoragePremium14:36
- Fixing Connect + Routing ErrorsPremium6:58
- Ensuring App SecurityPremium2:50
- Guarding RoutesPremium5:34
- Displaying User Specific OrdersPremium8:16
- Wrap UpPremium0:43
- Useful Resources & LinksPremium1:00
Section 19Improving our Burger Project
- Module IntroductionPremium0:39
- Fixing the Redirect to the FrontpagePremium5:48
- Using updateObject in the Entire AppPremium6:45
- Sharing the Validation MethodPremium2:16
- Using Environment VariablesPremium2:35
- Removing console.log()sPremium3:47
- Adding Lazy LoadingPremium4:58
- Wrap UpPremium0:50
- Useful Resources & LinksPremium1:00
Section 20Testing
- Module IntroductionPremium1:12
- What is Testing?Premium3:08
- Required Testing ToolsPremium2:26
- What To Test?Premium2:50
- Writing our First TestPremium12:34
- Testing Components ContinuedPremium4:05
- Jest and Enzyme DocumentationsPremium6:28
- Testing Components CorrectlyPremium2:28
- Testing ContainersPremium6:50
- How to Test ReduxPremium5:09
- Wrap UpPremium1:27
- Useful Resources & LinksPremium1:00
Section 21Deploying the App to the Web
- Module IntroductionPremium0:33
- Deployment StepsPremium2:58
- Building the ProjectPremium2:20
- Example: Deploying on FirebasePremium4:06
- Wrap UpPremium0:42
- Useful Resources & LinksPremium1:00
Section 22Bonus: Working with Webpack
- Module IntroductionPremium1:24
- Introducing WebpackPremium1:14
- How Webpack worksPremium2:39
- Basic Workflow RequirementsPremium1:35
- Project & npm SetupPremium3:47
- Creating a Basic Folder & File StructurePremium3:12
- Creating the Basic React ApplicationPremium10:55
- Installing Production DependenciesPremium1:10
- Setting Up the Basic Webpack ConfigPremium6:41
- Adding File Rules & BabelPremium7:07
- Loading CSS FilesPremium5:01
- Loading Images & Injecting into HTML PagePremium5:36
- Production Workflow & Wrap UpPremium2:43
- Adding babel-polyfillPremium1:00
- Useful Resources & LinksPremium1:00
Section 23Bonus: A Brief Introduction to Redux Saga
- Module IntroductionPremium1:29
- Installing Redux SagaPremium2:40
- Creating our First SagaPremium6:06
- Hooking the Saga Up (to the Store and Actions)Premium4:42
- Moving Logic from the Action Creator to a SagaPremium5:57
- Moving More Logic Into SagasPremium10:02
- Handling Authentication with a SagaPremium11:07
- Handling Auto-Sign-In with a SagaPremium5:52
- Moving the BurgerBuilder Side Effects into a SagaPremium7:01
- Moving the Orders Side Effects into SagasPremium12:34
- Why Sagas can be HelpfulPremium1:17
- Diving Deeper into SagasPremium6:55
- Useful Resources & LinksPremium1:00
Section 24React Hooks
- IntroductionPremium0:40
- What are "React Hooks"?Premium7:08
- The Starting ProjectPremium4:57
- Getting Started with useState()Premium9:20
- More on useState() & State UpdatingPremium11:54
- Array DestructuringPremium2:34
- Multiple StatesPremium3:47
- Rules of HooksPremium2:20
- Passing State Data Across ComponentsPremium7:56
- Assignment: Hooks Basics (Problem)Premium1:03
- Assignment: Hooks Basics (Solution)Premium2:55
- Sending Http RequestsPremium7:16
- useEffect() & Loading DataPremium8:06
- Understanding useEffect() DependenciesPremium2:21
- More on useEffect()Premium9:37
- What's useCallback()?Premium5:28
- Working with Refs & useRef()Premium5:21
- Cleaning Up with useEffect()Premium3:20
- Deleting IngredientsPremium2:28
- Loading Errors & State BatchingPremium8:48
- Understanding useReducer()Premium9:43
- Using useReducer() for the Http StatePremium10:40
- Working with useContext()Premium8:27
- Performance Optimizations with useMemo()Premium10:30
- Getting Started with Custom HooksPremium13:45
- Sharing Data Between Custom Hooks & ComponentsPremium14:58
- Using the Custom HookPremium8:11
- Wrap UpPremium3:05
- Useful Resources & LinksPremium1:00
Section 25Using Hooks in the Burger Builder
- IntroductionPremium1:08
- Converting the "App" ComponentPremium3:28
- Routing with React.lazy()Premium3:35
- Converting the Layout ComponentPremium2:39
- Converting withErrorHandler HOCPremium5:26
- Adjusting the Order & Checkout ContainersPremium4:28
- Add Hooks to ContactDataPremium5:38
- Converting the BurgerBuilder ContainerPremium4:25
- Adjusting Auth & Logout ComponentsPremium6:01
- Using React.memo() & More!Premium4:30
- Adding a Custom Error Handling HookPremium5:40
- Setting the right useEffect() DependenciesPremium4:58
- Working with useSelector() and useDispatch()Premium11:33
- Wrap UpPremium1:03
- Useful Resources & LinksPremium1:00
Section 26Bonus: Replacing Redux with React Hooks
- Module IntroductionPremium0:48
- Starting Project & Why You Would Replace ReduxPremium4:19
- Alternative: Using the Context APIPremium7:13
- Toggling Favorites with the Context APIPremium5:43
- Context API Summary (and why NOT to use it instead of Redux)Premium2:30
- Getting Started with a Custom Hook as a StorePremium8:11
- Finishing the Store HookPremium5:53
- Creating a Concrete StorePremium4:11
- Using the Custom StorePremium5:40
- Custom Hook Store SummaryPremium3:13
- Optimizing the Custom Hook StorePremium4:04
- Bonus: Managing Multiple State Slices with the Custom Store HookPremium1:00
- Wrap UpPremium2:00
- Useful Resources & LinksPremium1:00
Section 27Bonus: Next.js
- Module IntroductionPremium1:12
- Understanding Server Side RenderingPremium3:18
- Setting Up a ProjectPremium6:02
- Understanding the BasicsPremium3:53
- Next.js & Components & PagesPremium2:48
- Styling our App in Next.jsPremium2:47
- Handling (404) ErrorsPremium2:01
- A Special Lifecycle HookPremium9:33
- Deploying our AppPremium2:59
- Useful Resources & LinksPremium1:00
Section 28Bonus: Animations in React Apps
- Module IntroductionPremium1:07
- Preparing the Demo ProjectPremium6:12
- Using CSS TransitionsPremium4:34
- Using CSS AnimationsPremium5:32
- CSS Transition & Animations LimitationsPremium4:04
- Using ReactTransitionGroupPremium12:19
- Using the Transition ComponentPremium3:24
- Wrapping the Transition ComponentPremium3:16
- Animation TimingsPremium3:14
- Transition EventsPremium2:33
- The CSSTransition ComponentPremium5:23
- Customizing CSS ClassnamesPremium2:30
- Animating ListsPremium6:53
- Alternative Animation PackagesPremium4:28
- Wrap UpPremium1:57
- Useful Resources & LinksPremium1:00
Section 29Bonus: Building the Burger CSS
- Building the Burger CSS CodePremium24:55
Section 30Next Steps and Course Roundup
- Module IntroductionPremium1:00
- React Rocks! Where to find more ExamplesPremium1:24
- More Inspiration: Real-World Projects Built with ReactPremium1:23
- Static React Apps with Gatsby.jsPremium2:31
- Introducing React NativePremium2:17
- Component Libraries (Example: Material UI)Premium2:36
- Smaller Apps with PreactPremium3:08
- Comparing React with PreactPremium5:50
- CongratulationsPremium1:16
Course instructor
Maximilian Schwarzmüller
As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.
The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.