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

Сброс состояния через key

Условие

Форма профиля с внутренним состоянием должна полностью сбрасываться при смене userId. Менять внутренности Form нельзя - решай на уровне App.

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

  • показывает начальное значение

  • смена пользователя сбрасывает ввод

  • тот же пользователь состояние сохраняет

Как подойти

Приём «key как идентификатор сущности»: вместо useEffect, синхронизирующего состояние с пропсами, мы заявляем, что это другой экземпляр компонента. Код короче, и невозможно забыть сбросить какое-то поле. Обратная сторона - полное размонтирование: теряются фокус, прокрутка и незавершённые анимации.

Подсказки: 2
  1. Состояние привязано к позиции компонента в дереве.
  2. Изменение key заставляет React размонтировать старый экземпляр и смонтировать новый.

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

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