Desfazer/refazer com histórico da store
Crie uma pilha de histórico em torno de uma store gravável para oferecer desfazer e refazer.
Desfazer/refazer com histórico da store é uma aula grátis de Sveltejs Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Sveltejs Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Sveltejs Academy inclui 4 aulas no total.
Pilha de histórico
Envolva um armazenamento gravável com listas past/present/future para oferecer desfazer/refazer.
Implementação básica
Mantenha uma lista dos estados anteriores.
function createHistory(initial) {
let past = [], future = [];
const state = writable(initial);
return {
subscribe: state.subscribe,
set(v) { past.push(get(state)); future = []; state.set(v); },
undo() { if (past.length) { future.push(get(state)); state.set(past.pop()); } },
redo() { if (future.length) { past.push(get(state)); state.set(future.pop()); } }
};
}Limite o tamanho da pilha
Limite o tamanho do histórico para controlar o uso de memória.
Cópias profundas
Armazene cópias profundas dos objetos para evitar problemas de mutação.
Atalhos de teclado
Associe Ctrl+Z e Ctrl+Shift+Z a desfazer/refazer para obter uma experiência nativa.
Persistência do histórico
Salve em localStorage para permitir desfazer entre sessões, tendo cuidado com o tamanho.
Desempenho
Para estados grandes, armazene diferenças em vez de capturas completas.
Ramificação
A maioria dos aplicativos limpa future após uma nova ação; alguns editores mantêm um histórico ramificado.
Opções de bibliotecas
Bibliotecas como svelte-undo fornecem armazenamentos de histórico prontos para uso.
Indicadores da interface
Desative os botões de desfazer/refazer quando não houver nada a desfazer ou refazer.
Testes
Teste sequências de ações + desfazer/refazer para garantir a reversão correta.
Verificação rápida
O que a pilha future faz?
Recapitulação
Implemente desfazer/refazer com pilhas past/present/future ao redor de um armazenamento gravável. Limite o tamanho e associe atalhos.
Aprenda HTML com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 41
- Aulas
- 163
Perguntas Frequentes
A aula “Desfazer/refazer com histórico da store” é grátis?
Sim — o texto completo de “Desfazer/refazer com histórico da store” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Sveltejs Academy, atualize para CoddyKit PRO. O curso de Sveltejs Academy inclui 4 aulas no total.
O que vou aprender em “Desfazer/refazer com histórico da store”?
Crie uma pilha de histórico em torno de uma store gravável para oferecer desfazer e refazer. Você pratica Sveltejs Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Sveltejs Academy?
Nenhuma experiência prévia é necessária. Sveltejs Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Desfazer/refazer com histórico da store”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Sveltejs Academy?
Sim. Cada aula de Sveltejs Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Arquitetura de stores: módulos de funcionalidades
- Padrão de barramento de eventos com stores
- Atualizações otimistas da interface
- Desfazer/refazer com histórico da store