Код Middle Реализация с нуля обновлено
История с отменой
Условие
createHistory(initial): present, push(value), undo(), redo(), canUndo, canRedo. Новое значение после отмены стирает ветку возврата.
Что проверяют тесты
отмена и возврат
границы
новое действие стирает ветку возврата
флаги
Как подойти
Модель past/present/future - стандарт для редакторов. Главная деталь, которую забывают: push после undo обязан очистить future, иначе redo вернёт состояние из другой ветки истории и пользователь увидит чужие данные. Для тяжёлых состояний вместо снимков хранят команды с методом отмены.
Подсказки: 2
- Три части: прошлое, настоящее, будущее.
- Новое действие после отмены делает ветку возврата недостижимой.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.