Порядок очистки эффектов
Условие
Компонент должен подписываться на канал channel и переподписываться при его смене, ни на миг не оставаясь подписанным на два канала сразу. Функции subscribe и unsubscribe приходят пропсами.
Что проверяют тесты
подписывается при монтировании
переподписывается при смене канала
отписывается при размонтировании
отписка идёт от старого канала
Как подойти
Очистка эффекта выполняется перед следующим запуском и замкнута на значения своего рендера - поэтому отписка автоматически идёт от старого канала. Понимание этого снимает целый класс багов: подписки на неверный идентификатор, двойные слушатели, утечки при быстром переключении. Порядок строго такой: подписка A, отписка A, подписка B.
Подсказки: 2
- Очистка получает значения того рендера, в котором эффект был создан.
- Поэтому в unsubscribe надо передать channel из замыкания, а не читать свежий.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.