Back

Como Usar o LocalStorage em JavaScript para Salvar e Recuperar Dados

Como Usar o LocalStorage em JavaScript para Salvar e Recuperar Dados

O LocalStorage permite que os desenvolvedores armazenem dados de chave-valor no navegador do usuário de forma persistente. É útil para armazenar preferências do usuário, armazenar em cache respostas de API e manter o estado da aplicação entre sessões.

Principais Pontos

  • O LocalStorage é um sistema simples de armazenamento chave-valor que mantém os dados mesmo após recarregar a página ou reiniciar o navegador.
  • Não deve ser usado para dados sensíveis devido a preocupações de segurança.
  • Útil para armazenar preferências do usuário e cache leve de respostas de API.
  • Opções alternativas incluem SessionStorage (temporário) e IndexedDB (para armazenamento de dados complexos ou em grande escala).

Entendendo o LocalStorage

O LocalStorage faz parte da API Web Storage e fornece métodos para armazenar, recuperar e remover dados:

localStorage.setItem('theme', 'dark'); // Armazenar dados
const theme = localStorage.getItem('theme'); // Recuperar dados
localStorage.removeItem('theme'); // Remover um item específico
localStorage.clear(); // Limpar todos os dados armazenados

O LocalStorage mantém os dados até que sejam explicitamente removidos. Os dados são armazenados como strings, então para objetos ou arrays, use JSON.stringify() e JSON.parse():

const settings = { theme: 'dark', fontSize: 16 };
localStorage.setItem('settings', JSON.stringify(settings));
const savedSettings = JSON.parse(localStorage.getItem('settings'));
console.log(savedSettings.theme); // ""dark""

Caso de Uso 1: Armazenando Preferências do Usuário

O LocalStorage é comumente usado para armazenar configurações de interface, como preferências de tema.

// Salvando preferência de tema
localStorage.setItem('theme', 'dark');

// Aplicando preferência armazenada ao carregar a página
const savedTheme = localStorage.getItem('theme');
if (savedTheme) applyTheme(savedTheme);

Caso de Uso 2: Armazenando em Cache Respostas de API

Armazenar em cache respostas de API reduz requisições de rede desnecessárias e melhora o desempenho.

const cacheKey = 'apiData';
const maxAge = 60 * 60 * 1000; // 1 hora

const cached = localStorage.getItem(cacheKey);
if (cached) {
    const { data, timestamp } = JSON.parse(cached);
    if (Date.now() - timestamp < maxAge) {
        renderData(data);
    } else {
        localStorage.removeItem(cacheKey);
    }
}

if (!localStorage.getItem(cacheKey)) {
    fetch('/api/data')
        .then(response => response.json())
        .then(data => {
            renderData(data);
            localStorage.setItem(cacheKey, JSON.stringify({ data, timestamp: Date.now() }));
        });
}

LocalStorage vs. Outras Opções de Armazenamento Web

  • SessionStorage: Mesma API que o LocalStorage, mas os dados são limpos quando a aba é fechada.
  • IndexedDB: Suporta armazenamento de dados em grande escala com consultas estruturadas, mas é mais complexo.
  • Cookies: Usados para armazenamento do lado do servidor, enviados automaticamente com requisições HTTP.

Limitações e Melhores Práticas

  • Riscos de Segurança: Os dados são acessíveis via JavaScript; não armazene informações sensíveis.
  • Limites de Armazenamento: Cerca de 5MB por origem; exceder isso lança um erro QuotaExceededError.
  • Acesso Síncrono: Leituras/escritas grandes podem bloquear a thread principal.
  • Sem Expiração Automática: Implemente a lógica de expiração manualmente, se necessário.
  • Use Namespacing: Prefixe as chaves para evitar conflitos (MyApp_theme em vez de theme).

Conclusão

O LocalStorage é uma ferramenta poderosa, porém simples, para persistir pequenas quantidades de dados do lado do cliente. É mais adequado para armazenar preferências do usuário e armazenar em cache respostas leves de API. No entanto, os desenvolvedores devem estar cientes de suas limitações de segurança e garantir o tratamento adequado dos dados para evitar problemas de desempenho.

Perguntas Frequentes

Não, os dados do LocalStorage persistem indefinidamente, a menos que sejam manualmente limpos.

Normalmente cerca de 5MB por origem, dependendo do navegador.

Não, o LocalStorage é acessível por JavaScript e não deve ser usado para dados sensíveis.

O LocalStorage mantém os dados entre sessões, enquanto o SessionStorage limpa os dados quando a aba é fechada.

Use LocalStorage para pequenos pares chave-valor; IndexedDB é melhor para armazenamento complexo ou em grande escala.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers