Armazene e recupere as tarefas que você quer não fazer. Baixe o código seminal.
Vamos continuar a atividade da lista de tarefas 📓 mas, desta vez, nosso objetivo é exercitar o uso do WebStorage para salvar e carregar informações na página.
Já foi feito :3.
Já foi feito :3.
Já foi feito :3.
A página agora possui um novo input #nome-usuario e dois novos botões,
#salvar e #carregar.
Faça com que, quando o usuário clicar em #salvar, a página armazene no
localStorage o nome do dono da lista de tarefas (digitado no campo
#nome-usuario). Se precisar, veja o FAQ sobre o Web Storage.
Use a ferramenta do desenvolvedor, na guia Application, para verificar o que está salvo no localStorage, para ver se funcionou. Veja um exemplo:
Além de implementar o botão para salvar, faça também o botão #carregar que,
quando clicado, pega o nome do usuário dono da lista de tarefas e o coloca
no campo #nome-usuario.
Resultado parcial:
Agora, na mesma callback de click do botão #salvar, você deve salvar
também, no localStorage, o vetor tarefas.
Antes de partir para #carregar o vetor de tarefas, abra a ferramenta
do desenvolvedor e veja o que foi salvo lá. É o que você esperava?
Para entender o que aconteceu e corrigir esse problema, volte para os slides e continue a aula.
Agora que você sabe o que aconteceu e o que é JSON, use JSON.stringify para
salvar o vetor tarefas no formato JSON e JSON.parse para transformar a
String que foi recuperada do localStorage de volta em um vetor.
Lembre-se de que, ao carregar as tarefas, você deve limpar (remover todo
o conteúdo) o elemento ul#lista-tarefas.
Por fim, remova as duas tarefas de exemplo do arquivo tarefas.js,
tornando o vetor tarefas inicialmente vazio:
let tarefas = [];Resultado parcial:
Vamos fazer o botão #minimizar (aquele com um x lá no título) funcionar e,
além disso, persistir seu estado - se a logomarca estiver minimizada e o
usuário atualizar a página, ela deve permanecer minimizada. Se ela estiver
aberta, assim ela deve permanecer. Até que o usuário clique para minimizar ou
abrir novamente.
Para minimizar o título (#marca), basta colocar a classe .minimizado nele,
ou tirá-la para que ele fique aberto.
Desta vez, em vez de salvar essa preferência (minimizado: true ou false)
para sempre (isto é, no localStorage), se o usuário fechar o navegador
e abrir a página novamente (em uma nova sessão, logo, vamos usar
o sessionStorage), ele deve ver a logomarca aberta. Para tanto, assim que a
página carregar, devemos olhar para o sessionStorage para saber se devemos
incluir a classe .minimizado na #marca ou não.
-
Qual a diferença entre Web Storage,
localStorageesessionStorage?- Web Storage é o nome da tecnologia de armazenamento de dados que uma página Web pode pedir ao navegador para usar
- Há dois tipos de armazenamento:
- O
localStorage, que dura para sempre (veja os slides); e - O
sessionStorage, que tem a duração da "sessão" (veja os slides)- Por exemplo, os dados são mantidos apenas até o usuário fechar o navegador
- O
- Há dois tipos de armazenamento:
- Web Storage é o nome da tecnologia de armazenamento de dados que uma página Web pode pedir ao navegador para usar
-
Como posso salvar algo no
localStorageou nosessionStorage?localStorage.setItem('nome-do-que-estou-guardando', 'o-que-estou-realmente-armazenando'); sessionStorage.setItem('nome-do-que-estou-guardando', 'o-que-estou-realmente-armazenando');
-
Como posso recuperar algo que coloquei no
localStorageou nosessionStorage?let valorGuardado1 = localStorage.getItem('nome-do-que-guardei'); let valorGuardado2 = sessionStorage.getItem('nome-do-que-guardei');
- Lembre-se: tudo é armazenado e recuperado como String
-
O que é esse
[object Object]?-
Se o navegador tenta transformar um Object em uma String - por exemplo, se mandamos salvar um objeto no
localStorage, o navegador invoca um método que todo objeto possui chamado.toString() -
O
objeto.toString()é um método que tenta representar o objeto no formato de uma String. Por exemplo, se o objeto for umaDate, ele vai retornar uma String com a data atual: -
Contudo, para objetos "genéricos", o método
objeto.toString()retorna sempre"[object Object]": -
Em vetores, quando chamamos
vetor.toString(), o navegador chama otoStringpara cada item:
-
-
Como posso guardar um objeto no
localStorage/sessionStoragede forma que eu consiga recuperá-lo depois?- Veja os slides da aula sobre como representar objetos em strings e sobre o formato JSON
- Conseguimos salvar/recuperar apenas Strings com o Web Storage
- Contudo, é possível representar um objeto usando uma String
- Basta termos um formato para codificar as propriedades do objeto
- Para isso, usamos o formato JSON
- Para salvar, usamos
JSON.stringify(objeto), que retorna uma Stringlet meuCafe = { nome: 'pão', qtde: 1 }; let meuCafeEmString = JSON.stringify(meuCafe); // agora, salvamos a 'meuCafeEmString' no localStorage localStorage.setItem('cafe', meuCafeEmString);
- Para recuperar, usamos
JSON.parse(umaString), que retorna o objeto:let oQueComerString = localStorage.getItem('cafe'); let oQueComer = JSON.parse(oQueComerString); console.log(oQueComer.nome); // imprime 'pão'
- Para salvar, usamos
-
Como colocar/tirar uma classe em um elemento HTML?
ovelhaEl.classList.add('raca-de-ovelha'); ovelhaEl.classList.remove('raca-de-ovelha'); ovelhaEl.classList.toggle('invisivel');
- Veja os slides da aula js2
-
Como fazer algo quando um botão é clicado?
let botaoEl = document.querySelector('button'); function fazAlgumaCoisa() {






