Gostaria de saber por que apenas o conteúdo do array que foi adicionado no localStorage e não o array inteiro? O array posterior não deveria sobrescrever o array anterior?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Gostaria de saber por que apenas o conteúdo do array que foi adicionado no localStorage e não o array inteiro? O array posterior não deveria sobrescrever o array anterior?
Salve, Heitor!
Na realidade a gente coloca sempre o array inteiro, repara:
localStorage.setItem('tarefas', JSON.stringify(tarefas))
O único detalhe é que a gente transforma ele numa string usando JSON.stringify :)
Então, por que o array não sobrescreve o anterior? Não entendo essa parte.
Esse é o detalhe, Heitor!
O localStorage.setItem é uma função bem legal que a gente usa para guardar dados no armazenamento local do navegador. Pensa nisso como uma gaveta secreta no seu navegador, onde você pode guardar coisas e elas ficam lá, mesmo se você fechar e abrir o navegador de novo.
Agora, sobre a sua dúvida: sempre que você usa o localStorage.setItem com uma chave (nome) específica, o valor associado a essa chave é atualizado para o novo valor que você está definindo. É tipo quando você tem um post-it na geladeira e escreve algo novo nele, substituindo a mensagem antiga.
Vamos a um exemplo prático:
localStorage.setItem('meuItem', 'valor1');
localStorage.setItem('meuItem', 'valor2');
Primeiro, você criou uma chave chamada 'meuItem' com o valor 'valor1'. Depois, você usou a mesma chave 'meuItem', mas desta vez com o valor 'valor2'. O que acontece? O 'valor1' é substituído por 'valor2'. Então, se você for verificar o que está em 'meuItem', vai encontrar 'valor2'.
Se você quiser manter o valor antigo e adicionar um novo, você precisa usar uma chave diferente. Tipo assim:
localStorage.setItem('meuItem1', 'valor1');
localStorage.setItem('meuItem2', 'valor2');
Aqui, 'meuItem1' tem 'valor1' e 'meuItem2' tem 'valor2'. Ambos os valores estão seguros e armazenados separadamente.
Então, é isso!
O localStorage.setItem é super útil para guardar coisas, mas lembre-se: se usar a mesma chave, o valor antigo vai dar tchau e ser substituído pelo novo.
Entendi, obrigado!