PassFront
  1. PassFront
  2. База знаний
  3. Основы React

Какие особенности React важно учитывать на практике и почему?

Основы React

React прост в базовом использовании, но имеет набор особенностей, незнание которых приводит к типовым багам и тормозам.

Модель рендеринга

  • Изменение state перерендеривает компонент и всех его детей — независимо от props. Отсюда важность структуры дерева и точечной мемоизации.
  • Рендер должен быть чистой функцией: без мутаций, запросов и подписок в теле компонента — для этого есть эффекты и обработчики.
  • Обновления state асинхронны и батчатся; чтение state сразу после сеттера возвращает старое значение.

Иммутабельность

React определяет изменения сравнением ссылок. Мутация объекта в state (user.name = '...') не вызовет перерендер и сломает мемоизацию. Всегда создавать новые объекты/массивы.

Правила хуков

  • Хуки вызываются только на верхнем уровне компонента (не в условиях/циклах) — React сопоставляет их по порядку вызова.
  • Зависимости эффектов/useMemo/useCallback должны быть полными, иначе устаревшие замыкания.

Списки и key

Элементам списков нужен стабильный key из данных; индекс массива при изменяемом списке приводит к «перепрыгиванию» состояния между элементами.

Прочее важное

  • StrictMode в dev монтирует компоненты дважды — код эффектов должен быть идемпотентным.
  • SyntheticEvent: события навешиваются делегированием, а не на каждый узел.
  • JSX экранирует значения — XSS возможен в основном через dangerouslySetInnerHTML и href с javascript:.
  • React — библиотека для UI: роутинг, работа с сервером и стейт-менеджмент выбираются отдельно.

Коротко для собеседования

Главное: перерендер каскадом вниз по дереву, чистота рендера, асинхронный батчинг обновлений, иммутабельность состояния, правила хуков и полные зависимости, стабильные key в списках, двойное монтирование в StrictMode. Большинство багов в React-коде — нарушение одного из этих пунктов.

Другие вопросы раздела