No internet connection
  1. Home
  2. JavaScript

Persistência de dados com localStorage

Por Daniel Carvalho @DanielCarvalho
    2023-12-08 16:20:25.864Z

    Olá, pessoal. Como o professor usou o localstorage na aula do dia 6/12, vou aproveitar para falar um pouco sobre.

    O localStorage é uma implementação do HTML5 e com ele nos conseguimos criar listas e fazer com que os dados se tornarem persistentes, ou seja, elas ficam salvos no navegador do usuário e mesmo que você feche o navegador ou reinicie seu computador a sua lista vai continuar salva.

    • Salvar dados

    Uma das maneira de salvar um dado é usando o método setItem() que contém dois parâmetros: chave(nome da variável) e valor(conteúdo da variável)

    <script>
    LocalStorage.setItem("nome", "Daniel")
    </script>
    

    para visualizar a informação salva aperte F12(estou usando o chrome), clique em Application e procure por local storage. Lá estará o nome salvo.

    • Recuperando/pegar dados

    Para recuperar os dados usamos localStorage.getItem() chamando o parâmetro chave.
    Eu irei colocar a informação salva dentro de uma variável e exibir no Console.

    <script>
    let nome = localStorage.getItem("nome")
     console.log(nome);
    </script>
    
    • Remover dados do LocalStorage

    Para remover temos os métodos removeItem() que é utilizado para apagar o conteúdo de uma variável e clear() que remove todas as variáveis.

    <script>
    localStorage.removeItem("nome")
    </script>
    
    
    • Manipulando Lista no localStorage
    <script>
        function adicionarNome() {
            // Recuperamos a lista atual do localStorage usando JSON.parse para transformar 
           uma string em objeto, caso a lista esteja vazia criamos somente um array vazio []
           
            var listaNomes = JSON.parse(localStorage.getItem("listaNomes")) || [];
    
            let nome = prompt("adicione um nome");
    
            // Adicionamos a variável nome à lista para salvar o nome de uma nova pessoa
            listaNomes.push(nome);
    
            // Atualiza a lista no localStorage usando  JSON.stringify para tranformar um objeto 
            em uma string json
            localStorage.setItem("listaNomes", JSON.stringify(listaNomes));
          }
    
          adicionarNome();
    </script>
    
    • 5 respostas
    1. Parabéns pelo texto @DanielCarvalho . Só para complementar, ao trabalhar com localStorage é bom salientar a obrigatoriedade de lidar com strings nos dados. Quando você salva dados usando o setItem(), tanto a chave quanto o valor são tratados como strings. Quando temos tipos de dados diferente de strings, como números ou objetos, temos que usar JSON.stringify() ao salvar e JSON.parse() ao recuperar os dados, como você exemplificou.

      1. Daniel Carvalho @DanielCarvalho
          2023-12-09 12:01:37.264Z

          Verdade. Obrigado pela contribuilçao @matheus_panobianco

        • Em resposta aDanielCarvalho:

          Ótima explicação sobre o uso do localStorage, e é excelente ver como você trouxe um exemplo prático relacionado à aula recente.

          É importante mencionar que o localStorage tem um limite de armazenamento, geralmente em torno de 5 a 10 MB por domínio, dependendo do navegador. Isso é crucial considerar ao decidir o que e quanto armazenar localmente.

          Além de armazenar strings simples, o localStorage também pode ser utilizado para salvar objetos e arrays. Inclusive foi uma solução importantíssima pra resolver o desafio do Fast Track. Exemplo:

          // Exemplo de salvamento de objeto
          let pessoa = { nome: "Daniel", idade: 25 };
          localStorage.setItem("pessoa", JSON.stringify(pessoa));
          
          // Recuperando o objeto
          let pessoaSalva = JSON.parse(localStorage.getItem("pessoa"));
          console.log(pessoaSalva);
          
          1. Daniel Carvalho @DanielCarvalho
              2023-12-12 12:02:10.448Z

              Não sabia do limite de armazenamento. Obirgado pela contribuição, @marceleeller.

            • Em resposta aDanielCarvalho:
              Nilwan Grisosti @nilwan
                2023-12-08 21:37:35.138Z

                Bacana demais, @DanielCarvalho! Obrigado por compartilhar esse conhecimento.