Skip to content
Development FE—02

React in practice

A course for people who already write markup and want to build interfaces in React. We cover state, hooks, server data and routing, and at the end we publish a working shop with a cart and checkout.

12 modules34 lessons
26 hoursof video and practice
Markup neededrequirements
Foreveraccess and updates
Format
€72 one-off payment
Place the order Open the programme
Payment by card or through PayPal
Access opens immediately after payment
14-day refund, if you have not started watching
Outcome

What you will be able to do

Build an interface out of components and pass data through props
Manage state with useState, useReducer and your own hooks
Load data from a server and show loading and error states
Set up routes, URL parameters and protected pages
Find unnecessary re-renders and speed up heavy lists
Write basic tests, build the project and publish it online
Programme

12 modules, one project

Press a module to open its lessons

01 First components and JSX3 lessons · 2 h 16 minOpen

We set the project up, find our way around the folder structure and the JSX syntax. We take the catalogue design from the markup course and split it into components that later grow into the shop.

Setting up a project with Vite and the folder structure
JSX: markup, expressions and attributes
Splitting the catalogue design into components
02 Props and composing components3 lessons · 2 h 16 min

We learn to pass data down the tree and assemble complex blocks out of simple ones. We cover children, default values and the line between a component and its settings.

Passing data into a component through props
Children and slots: the product card and the modal
Default values and checking incoming data
03 State and hooks3 lessons · 2 h 17 min

Component state, reacting to events and effects for working with the outside world. We move repeated logic into our own hooks and go through the common mistakes with dependencies.

useState: item quantity and toggles
useEffect and dependencies: syncing with the outside world
Your own hook: extracting repeated logic
04 Lists, keys and conditional rendering2 lessons · 1 h 34 min

We render the catalogue from an array, work out keys and why a list «jumps». We show empty states, filters and sorting without extra redraws.

Rendering the catalogue with map and keys
Empty states, filters and sorting
05 Forms and validation3 lessons · 2 h 16 min

Controlled fields, form state and validation without third-party libraries. We build a multi-step order form with clear error messages and protection against double submission.

Controlled fields and form state
Validation and error messages
The checkout form: steps and submission
06 Server data3 lessons · 2 h 19 min

We request the catalogue from a server: async/await, cancelling stale requests and racing responses. We add search and paged loading without breaking the state of the screen.

fetch and async/await: loading the catalogue
Cancelling requests and racing responses
Search and paged loading
07 Loading, errors and retries2 lessons · 1 h 34 min

The two states people usually forget: while it loads and when it breaks. Skeletons, retries, error boundaries and messages a person can understand.

Skeletons and loading indicators
Request errors, retries and the error boundary
08 Routing3 lessons · 2 h 12 min

We spread the shop across pages: catalogue, product, cart, checkout. URL parameters, nested routes with a shared layout, redirects and access for signed-in users only.

Routes, links and URL parameters
Nested routes and a shared layout
Protected pages and redirects
09 Shared application state3 lessons · 2 h 21 min

When props are no longer enough: context for the theme and the user, useReducer for the cart. We compare the approaches and move the cart into an external store that survives between sessions.

Context: theme, user and language
useReducer: the cart logic in one place
Moving the cart into an external store
10 Performance and re-renders3 lessons · 2 h 16 min

We look for the causes of unnecessary redraws in the profiler and fix them. memo, useMemo and useCallback where they earn their place, virtualising a long catalogue, and measurements before and after.

Why a component renders: reading the profiler
memo, useMemo and useCallback where they belong
Virtualising a long product list
11 Testing the basic scenarios3 lessons · 2 h 19 min

We write tests that check behaviour rather than markup. A button click, a form submission, adding an item to the cart and mocking network requests.

Setting up tests and a first component test
Testing the form and adding to the cart
Mocking requests and checking loading states
12 Build, deploy and the final project3 lessons · 2 h 20 min

We make a production build, deal with environment variables and bundle size. We finish the order payment, publish the shop online and check it on a real domain.

The build, environment variables and bundle size
Order payment and confirmation
Deploying the shop and checking it in production
Materials

What you get

A starter repository for the shop

A project template with the catalogue markup, card designs and a practice API, so you can start at lesson one without setting up an environment.

A component code-review checklist

The checks before a merge: prop structure, side effects, keys in lists, error handling, accessibility and re-renders.

A hooks cheat sheet

Short cards with signatures, typical mistakes and examples for useState, useEffect, useMemo, useCallback, useReducer and your own hooks.

The final project, explained

A reference implementation of the shop with a cart, payment and deployment, to compare your decisions against and go through the debatable parts.

Dediu Pavel
Course author

Dediu Pavel

Teaches the «Web development» direction at Forma. The full list of their courses is on their page.

All courses by this author

The whole first module is open

Watch the lessons of the first module and the first task. If the format does not suit you, you have lost nothing.