DOM и React Senior Эффекты и жизненный цикл обновлено

Порядок очистки эффектов

Условие

Компонент должен подписываться на канал channel и переподписываться при его смене, ни на миг не оставаясь подписанным на два канала сразу. Функции subscribe и unsubscribe приходят пропсами.

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

  • подписывается при монтировании

  • переподписывается при смене канала

  • отписывается при размонтировании

  • отписка идёт от старого канала

Как подойти

Очистка эффекта выполняется перед следующим запуском и замкнута на значения своего рендера - поэтому отписка автоматически идёт от старого канала. Понимание этого снимает целый класс багов: подписки на неверный идентификатор, двойные слушатели, утечки при быстром переключении. Порядок строго такой: подписка A, отписка A, подписка B.

Подсказки: 2
  1. Очистка получает значения того рендера, в котором эффект был создан.
  2. Поэтому в unsubscribe надо передать channel из замыкания, а не читать свежий.

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

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