Практикум: введение
Это практический раздел. В отличие от справочных глав A–D, здесь не теория, а тренажёр: ты пишешь код руками, а готовый эталон смотришь только чтобы свериться.
Что мы строим
Заголовок раздела «Что мы строим»Сквозное приложение — Task Tracker (менеджер задач). Одно и то же приложение мы соберём дважды:
- Часть E (этот раздел) — на чистом React + TypeScript с хуками.
- Часть F — то же приложение, переписанное на MobX, чтобы прочувствовать разницу подходов.
Приложение растёт от шага к шагу: начинаем с локального состояния списка, добавляем фильтры и поиск, загрузку с «сервера», оптимизацию рендера, сложное состояние и, наконец, выносим логику в кастомные хуки.
Как устроен каждый шаг
Заголовок раздела «Как устроен каждый шаг»Каждая страница-шаг построена по одной схеме:
-
Постановка задачи — что конкретно нужно реализовать. Сначала пробуешь сам.
-
Какие API и зачем — список нужных хуков и методов с объяснением, почему именно они решают задачу. Это подсказка, если застрял.
-
Эталонная реализация — раскрываемый блок с правильным кодом. Открывай его, только когда написал свой вариант или хочешь свериться.
-
Ловушки — типичные ошибки по этой теме и как их избежать.
Сквозная модель данных
Заголовок раздела «Сквозная модель данных»Весь практикум опирается на один тип задачи и один мок-API. Они определены в шаге Окружение (Vite) и не меняются между шагами — меняется только то, как мы с ними работаем.
// Тип задачиinterface Task { id: string; // уникальный идентификатор title: string; // текст задачи done: boolean; // выполнена ли createdAt: number; // метка времени создания (для сортировки)}
// Фильтр отображенияtype Filter = 'all' | 'active' | 'done';Данные приходят не из настоящего сервера, а из мок-API — функций с setTimeout, которые имитируют сетевую задержку и иногда ошибку. Так можно тренировать загрузку, состояния loading/error и обработку гонок без бэкенда.
Маршрут практикума
Заголовок раздела «Маршрут практикума»Часть E — React + TypeScript:
- Окружение (Vite) — создаём проект, структуру папок, тип
Taskи мок-API. - Шаг 1 — состояние списка (
useState): добавление, удаление, переключение задач. - Шаг 2 — производное состояние (
useMemo): фильтры, счётчики, поиск. - Шаг 3 — загрузка данных (
useEffect): загрузка с мок-сервера,loading/error, гонки запросов. - Шаг 4 — ссылки и оптимизация (
useRef,useCallback,React.memo). - Шаг 5 — сложное состояние (
useReducer,useContext). - Шаг 6 — кастомные хуки (
useTasks,useDebounce,useLocalStorage).
После Части E переходи в Часть F — там тот же Task Tracker переписывается на MobX.