Как реализовать undo/redo?

Middle
179 просмотров
AFK Offer AI

Стек: history массив состояний, pointer (текущий индекс). Undo: pointer--, восстанови state[pointer]. Redo: pointer++, восстанови state[pointer]. При новом действии: обрежь history после pointer, добавь новое состояние. Оптимизация: храни diff вместо полных snapshot. Command pattern: каждое действие — объект с execute/undo. Ctrl+Z / Ctrl+Shift+Z для шорткатов. Ограничь размер history (100 шагов). Для текстовых редакторов: нативный document.execCommand("undo") или кастомный на operational transforms.

Следующий вопрос

Зачем нужен URL API?