React
Изучите React с нуля. Компоненты, состояние, хуки, контекст, производительность, маршрутизация, тестирование и итоговое приложение.
17 уроков по порядку
- 125 мин
Что такое React?
Добро пожаловать. Если вы ни разу не написали ни строчки на JavaScript и не очень понимаете, что такое «фреймворк», вы пришли по адресу. К концу...
What React isComponents as functionsVirtual DOM intuitionRendering JSXCreating a Vite app - 230 мин
JSX и компоненты (Components)
В прошлом уроке компонент возвращал нечто похожее на HTML: return <h1>Hello, React</h1>;. Наверняка это показалось немного странным. Функции в...
JSX syntax rulesSingle root elementClassName vs classEmbedding expressions with {}Defining componentsComposing components - 330 мин
Параметры (Props)
Все компоненты, которые вы писали до сих пор, были жёстко зашиты. Greeting всегда здоровается с одним и тем же именем, Card всегда показывает один и...
Passing props as attributesReceiving props objectDestructuring props in signatureDefault valuesThinking about prop shapes - 435 мин
Состояние (State) с помощью useState
Все компоненты, которые вы писали до сих пор, при одних и тех же пропсах каждый раз выдают один и тот же результат. Для заголовка или карточки этого...
UseState hookReading stateCalling the setterUpdater function formNever mutate stateCounter pattern - 530 мин
Обработка событий
Компонент, который только отрисовывает себя по пропсам и состоянию, сам по себе не интерактивен: что-то должно замечать, что пользователь нажал...
OnClick handlerOnChange basicsPassing functions vs calling themEvent objectPassing handlers as props - 630 мин
Условный рендеринг и списки
Почти любой экран, которым вы когда-либо пользовались, показывает одно вместо другого в зависимости от какого-то условия: плашка «у вас новые...
&& for show/hideTernary for either/orMapping arrays to JSXThe key propWhy keys need to be stable - 735 мин
Формы и управляемые поля ввода (Controlled Inputs)
Наберите букву в обычном <input> из HTML, и браузер всё сделает сам: элемент DOM молча запомнит набранное, и сообщать об этом никому не нужно. Так...
Controlled input patternValue and onChange togetherMulti-field form stateOnSubmit and preventDefaultGathering form data - 840 мин
Эффекты (Effects) с useEffect
До сих пор работа компонента сводилась к одному: посмотреть на текущие пропсы и состояние и ответить на вопрос, что должно быть на экране прямо...
What counts as a side effectUseEffect signatureDependency arrayRunning on mount onlyCleanup functionSubscribe/unsubscribe pattern - 940 мин
Получение данных
Почти ни одно настоящее приложение не обходится тем, что уже лежит у пользователя на экране. Рано или поздно компоненту приходится о чём-то спросить...
Fetch inside useEffectLoading/error/data statesAbortController cleanupPreventing setState after unmountMention TanStack Query as a next step - 1035 мин
Компоновка компонентов (Components)
Вы собрали карточку с рамкой и тенью, и выглядит она хорошо. Теперь такая же карточка нужна вокруг фотографии, вокруг формы входа и вокруг списка...
Children propWrapping componentsPassing JSX as propsLifting state upThinking in component trees - 1135 мин
Context и useContext
В вашем приложении есть переключатель тёмной темы. Сам переключатель живёт на панели настроек, а знать о нём нужно кнопке, которая сидит восемью...
CreateContextContext.ProviderUseContextWhen context is the right toolContext vs prop drilling tradeoffs - 1235 мин
useReducer
Форма оплаты начинается просто. Есть значение, значит, добавляем useState. Потом нужно сообщение об ошибке, значит, ещё один useState. Потом признак...
When to reach for useReducerReducer function shapeAction objectsDispatchCombining useReducer with useContext - 1335 мин
Пользовательские хуки (Hooks)
Вы написали выдвижную панель, которая открывается и закрывается. Три строки с useState и обработчик, переключающий логическое значение. Потом то же...
Extracting stateful logic into a functionUse prefix conventionUseToggle exampleUseLocalStorage exampleHooks rules - 1435 мин
Производительность и мемоизация (Memoization)
В вашем приложении есть таблица на две тысячи строк и поле поиска над ней. Каждое нажатие клавиши даётся с трудом: вы печатаете, и через полсекунды...
React.memo for componentsUseMemo for expensive computationsUseCallback for stable function referencesWhen memoization is overkillMeasuring before optimizing - 1540 мин
Маршрутизация с React Router
Всё, что вы собрали до сих пор, живёт по одному адресу. Страница одна, и то, что вы хотите показать пользователю, вы показываете или скрываете через...
Installing react-router-domBrowserRouterRoutes and RouteLink for navigationUseParamsUseNavigate - 1640 мин
Тестирование компонентов React (Components)
Вы меняете одну строку в общем компоненте, а потом двадцать минут кликаете по приложению и проверяете, что больше ничего не сломалось. Через неделю...
Vitest + React Testing Library setupRender and screenGetByRole queriesUserEvent for interactionsWriting one good button test - 1760 мин
Итоговый проект: приложение со списком задач
До сих пор каждый урок давал вам ровно одну идею и маленький пример вокруг неё. Настоящие приложения устроены иначе. В настоящем приложении состояние...
Combining state, lists, controlled inputsCustom hook for localStorage persistenceSmall routing setupPutting it together
Изучай React на своём языке
Каждый урок, тест и ответ наставника показывается на вашем языке. AI-наставник отвечает на том языке, на котором вы пишете.
Roles that use React
See how hiring teams interview engineers on React, in production-like environments.
Frontend Engineer (React, Angular, Vue)
Hire frontend engineers in real workspaces with Vite, real component libraries and real performance budgets. Live or take-home, fully recorded.
See the interviewFull Stack Developer
Hire full stack developers in real apps with real APIs, real UIs and real tests. Live or take-home, fully recorded.
See the interviewWeb Application Engineer
Hire web application engineers in real apps with real routes, real auth and real test suites. Live or take-home, fully recorded.
See the interview