</> Praktum

Главная / React

Библиотека интерфейсов

React: собирай интерфейс из частей

В React страницу удобно мыслить как набор небольших компонентов. Разберём этот подход спокойно: без магии, но с работающими примерами.

  • Нужен JavaScript
  • 13 тем
  • Компоненты и state
Смотреть темы →

Программа

Сначала фундамент

React становится понятнее, когда каждая новая идея отвечает на конкретную задачу интерфейса.

01 / старт

Компоненты

Разделяем интерфейс на независимые части.

02 / данные

Props

Передаём данные в компонент.

03 / действие

State

Меняем состояние компонента.

04 / урок

JSX в React: разметка внутри JavaScript

Что такое JSX в React: разметка в JavaScript, выражения в фигурных скобках, className и htmlFor, Fragment, стили-объекты и экранирование.

05 / урок

Загрузка в React

Эффект нужен для запроса. Обычный рендер только показывает уже полученные данные.

06 / урок

Кнопка в React меняет состояние

Компонент уже умеет хранить state. Кнопка — самый прямой способ его поменять.

07 / урок

Два экрана одним состоянием

Для двух видов одной маленькой программы маршрутизатор не обязателен.

08 / урок

Ошибка запроса в состоянии компонента

Загрузка, успех и ошибка — три состояния, и одно из них не должно затирать остальные.

09 / новая тема

useEffect в React

Подключаем события, запросы и очистку эффекта.

10 / новая тема

Условный рендеринг в React

Работаем с if, тернарным оператором и &&.

11 / новая тема

Списки и key в React

Рендерим коллекции без ошибок состояния.

12 / новая тема

Формы в React

Связываем input со state и обрабатываем submit.

13 / новая тема

Подъём состояния в React

Синхронизируем соседние компоненты через родителя.

Практикумы

Короткие задачи по React

Короткие задачи на одну тему: прочитай, повтори в песочнице и проверь результат.

Практика: список задач

Собери небольшой список дел: добавляй задачи, отмечай готовые и тренируй работу со state.

Начать →

Подробнее

React обновляет интерфейс из данных

В обычном скрипте ты сам находишь элемент и меняешь текст. В React ты описываешь, как интерфейс выглядит при текущих данных, и меняешь данные. Библиотека заново вызывает компонент и обновляет нужные узлы. Поэтому прямое document.querySelector внутри компонента быстро расходится с тем, что React считает правдой.

Компонент — функция, которая получает вход и возвращает разметку. Одинаковый вход должен давать одинаковую разметку. Запрос на сервер, подписка и запись в хранилище живут в эффектах, а не посреди вычисления разметки.

function Price({ amount }) {
  return <strong>{amount.toLocaleString("ru-RU")} ₽</strong>;
}

export default function Card() {
  return <p>Занятие стоит <Price amount={1800} /></p>;
}

Что учить сразу после первого компонента

  • Props передают данные внутрь и не меняются самим компонентом.
  • State хранит то, что меняется: счётчик, текст поля, открыто ли меню.
  • Списки требуют стабильный key, а не индекс, если элементы удаляются и переставляются.
  • Эффект нужен для связи с внешним миром, а не для каждой производной цифры.
Запомни: Собери один маленький интерфейс до конца: список, поле и кнопку. Набор отдельных песочниц хуже показывает, как props и state встречаются.

Частые первые поломки

Имя компонента с маленькой буквы React воспринимает как обычный тег. Соседние элементы без общей обёртки нельзя вернуть просто так: оберни их во фрагмент. Вызов setState прямо в теле компонента запускает новый рендер и зацикливает страницу. Состояние меняют в обработчике или в эффекте, а не во время рисования.