Код Senior Реализация с нуля обновлено

Композиция редьюсеров

Условие

combineReducers(map) возвращает редьюсер, раздающий действие всем частям. Если ни одна часть не изменилась, состояние должно вернуться тем же по ссылке.

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

  • раздаёт действие

  • ссылка сохраняется при отсутствии изменений

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

  • части независимы

Как подойти

Сохранение ссылки при отсутствии изменений - не микрооптимизация, а контракт: на нём держится вся система подписок. Подписчик сравнивает срез состояния по ссылке и пропускает рендер. Если возвращать новый объект всегда, перерисовывается всё приложение на каждое действие. Проверка количества ключей нужна для случая, когда набор частей изменился.

Подсказки: 3
  1. Каждая часть получает только свой кусок состояния.
  2. Сравнивай результат каждой части с прежним значением по ссылке.
  3. Если не изменилось ничего - верни прежний объект целиком.

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

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