DOM и React Middle Состояние и useState/useReducer обновлено
useReducer
Условие
Корзина: кнопки «+» и «−» меняют количество, «сброс» обнуляет. Количество не должно уходить ниже нуля. Используй useReducer.
Что проверяют тесты
увеличивает
не уходит ниже нуля
сбрасывает
Как подойти
useReducer выигрывает у useState, когда переходов несколько и они связаны правилами: вся логика собрана в одном месте и тестируется без React. Инварианты (не ниже нуля) держи в редьюсере, иначе их придётся дублировать в каждом обработчике.
Подсказки: 2
- Редьюсер - чистая функция (состояние, действие) → новое состояние.
- Ограничение «не ниже нуля» живёт в редьюсере, а не в обработчике.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Термины по теме
Ещё по теме «Состояние и useState/useReducer»
- Производное значение
- Стабильность dispatch
- Батчинг
- Ленивая инициализация state
- Функциональный апдейтер
- useReducer
- Апдейтер вперемешку со значением
- Ленивая инициализация