useLocalStorage Hook de Local Storage

Última atualização: 2026-11-03

useLocalStorage Hook de Local Storage

useLocalStorage mantém as leituras e escritas de useState em sincronia com localStorage: ele lê o valor armazenado preguiçosamente durante a inicialização e escreve de volta no disco a cada atualização, de modo que o estado sobrevive a um recarregamento da página. É o exemplo de livro didático de um hook personalizado que encapsula uma API nativa do navegador. O setter retornado se comporta exatamente como o de useState, então quem chama nunca precisa aprender uma segunda API só para obter persistência de graça.

GrupoPadrões de Componentes
TipoHook
DesdeReact 16.8

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

function useLocalStorage(key, initial) {
  const [value, setValue] = useState(() => {
    const saved = localStorage.getItem(key)      // lazy init: read only once
    return saved !== null ? JSON.parse(saved) : initial
  })
  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value))
  }, [key, value])
  return [value, setValue]
}

⚙️ Parâmetros

keyA chave de armazenamento em localStorage; prefixe-a com o nome do seu app para evitar colisões.
initialO valor usado quando nada está armazenado localmente; qualquer tipo serializável em JSON é suportado.

Retorna:Retorna uma tupla [value, setValue] que funciona exatamente como useState, exceto que as leituras e escritas são persistidas em localStorage automaticamente.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

Clicar no botão aumenta o contador e o escreve em localStorage; após um recarregamento ou reabrir a página a contagem ainda está lá, e "Reset" a traz de volta a zero.

💡 Pontos-chave

💡 Dica Passe uma função para inicializar para que o valor seja lido preguiçosamente, o que evita tocar localStorage a cada renderização — é I/O síncrono e não é barato.
ℹ️ Informação Armazene objetos e arrays com serialização JSON, e defenda a leitura com try/catch caso o valor armazenado esteja sujo ou tenha sido editado manualmente.
⚠️ Aviso localStorage é compartilhado por origem e limitado a cerca de 5 MB, então dados sensíveis como tokens nunca devem ser armazenados lá em texto puro.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Ele vai lançar erro em SSR?
R Sim, o servidor não tem window nem localStorage. Proteja a leitura com uma verificação typeof window ou mova-a para um useEffect.
P Como ele difere de usar useState diretamente?
R Ele adiciona uma camada de persistência: o valor inicial vem do disco, toda mudança é escrita de volta automaticamente, e a API permanece idêntica a useState.
P Por que JSON.stringify ao armazenar um objeto?
R localStorage só consegue guardar strings; sem serialização você armazenaria "[object Object]" e nunca poderia restaurar o valor.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%