DOM и React Middle Компоненты на практике обновлено

Баг: условный вызов хука

Условие

Компонент молча теряет состояние счётчика, если user на время исчезает. Почини так, чтобы порядок и количество хуков не зависели от условий: показывай 'нет данных', если user не передан, иначе имя и счётчик кликов.

Что проверяют тесты

  • без данных

  • с данными

  • состояние переживает пропажу данных

Как подойти

Правило хуков: одинаковый порядок и количество на каждом рендере. React хранит их списком и сопоставляет по индексу. Коварство в том, что исключение бросается не всегда: если рендер вышел до единого хука, React считает следующий рендер монтированием и молча обнуляет всё состояние. Тихая потеря данных хуже падения - её не видно в логах. Условие всегда переносится ниже всех хуков.

Подсказки: 2
  1. React сопоставляет хуки по порядку вызова, а не по имени.
  2. Все хуки должны вызываться до любого раннего return.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.