Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Editar elementos salvos no local storage

No curso há a seguinte pergunta:

"Você está desenvolvendo um aplicativo web que permite aos usuários criar uma lista de tarefas para se organizarem. No entanto, você percebeu que os usuários não conseguem editar as tarefas após tê-las inserido no aplicativo.

Marque a alternativa que indica como resolver esse problema e permite que os usuários editem as tarefas já salvas no LocalStorage:"

E a resposta é a seguinte:

"Utilizar o método setItem do LocalStorage para sobrescrever os dados da tarefa específica com os novos dados editados."

Minha dúvida sobre isso é:

Mas se eu usar o setItem, como eu defino se ele vai sobrescrever os dados de uma informação específica ou se ele vai salvar novos dados? Pq se eu não pego nenhum identificador desse elemento e a chave é a mesma, como eu sei que aquele elemento vai ser sobrescrito?

3 respostas

Olá Pedro,

Não se preocupe com isso, pois o comportamento do método setItem já é responsável por toda a lógica. A partir de uma chave ele identifica se a mesma existe ou não. Caso não exista, a criação é realizada. Caso exista, a atualização é realizada. Assim tua responsabilidade fica unicamente em informar a chave correta em todos os pontos do código.

Vale lembrar que tal comportamento é válido para sessionStorage ou localStorage.

Caso queira saber mais, consulte aqui.

Abraços!

Mas se a chave é a mesma para vários elementos, como ele vai saber qual elemento deve ser atualizado?

por exemplo, se eu tenho o seguinte:

chave: tarefas

valor:

["comprar leite", "estudar", "fazer exercícios", "ler um livro"]

E aí, eu quero atualizar o último para "ler dois livros".

se eu só colocar setItem("tarefas", "ler dois livros"), ele vai apenas criar mais um registro dentro da chave "tarefas", não é?

Nesse caso, como eu faço para editar o "ler um livro" para "ler dois livros"?

solução!

Considerando teu exemplo, no momento em que fizer setItem("tarefas", "ler dois livros") o valor de tarefas passa a ter apenas o "ler dois livros" e todo o resto (comprar leite, estudar, fazer exercícios, ler um livro) será eliminado. Entenda que a implementação do setItem fará com que o valor da chave informada seja completamente atualizado e não item a item contido lá dentro.

Diante disso, em uma atualização de "1 livro" para "2 livros" basta sempre reenviar a lista de tarefas, mas agora contendo o valor atualizado.

Exemplo:

localStorage.setItem('todos', '1;2;3;4');
// valor de todos: 1;2;3;4

Agora vamos supor que a tarefa 3 foi por engano e eu quero a 5. Logo, na atualização:

localStorage.setItem('todos', '1;2;5;4');
// valor de todos: 1;2;5;4

Caso esteja trabalhando com classes, objetos e afins, pode criar métodos para incluir, editar ou remover itens da tua lista.