Код Senior Реализация с нуля обновлено
Композиция редьюсеров
Условие
combineReducers(map) возвращает редьюсер, раздающий действие всем частям. Если ни одна часть не изменилась, состояние должно вернуться тем же по ссылке.
Что проверяют тесты
раздаёт действие
ссылка сохраняется при отсутствии изменений
новая ссылка при изменении
части независимы
Как подойти
Сохранение ссылки при отсутствии изменений - не микрооптимизация, а контракт: на нём держится вся система подписок. Подписчик сравнивает срез состояния по ссылке и пропускает рендер. Если возвращать новый объект всегда, перерисовывается всё приложение на каждое действие. Проверка количества ключей нужна для случая, когда набор частей изменился.
Подсказки: 3
- Каждая часть получает только свой кусок состояния.
- Сравнивай результат каждой части с прежним значением по ссылке.
- Если не изменилось ничего - верни прежний объект целиком.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.