Chupachar
@Chupachar
front-end dev

Как реализовать правильное поведение удаления всех данных из localStorage?

Всем добрый, есть кнопка "remove" функционалом которой является удаление всех данных из localStorage c помощью метода localStorage.clear(), в данном случае при клике на "remove" удаление срабатывает правильно и localStorage чистится, но если я еще раз нажму на кнопку "add", то предыдущие удаленные объекты вновь появятся в массиве + новый объект. Я понимаю что проблема заключается в том, что переменная getItem находится в глобальном scope и из за этого оно работает не корректно. Подскажите пожалуйста как можно это решить.
https://jsfiddle.net/e19z43t0/7/
const info = document.querySelector('.info')
const button = document.querySelector('.button')
const removeAllStorage = document.querySelector('.remove-storage')
const currentCars = JSON.parse(localStorage.getItem("cars") || "[]");

const renderCars = (cars = currentCars) => {
  [...cars].forEach((item) => {
    info.insertAdjacentHTML(
      "beforeend",
      `<div class="item" id="${item.car}"></div>`
    )
  })
}
renderCars()

button.addEventListener('click', function() {

  const cars = {
    cars: 'cars'
  }
  currentCars.push(cars);
  renderCars([cars]);

  function updateState() {
    localStorage.setItem("cars", JSON.stringify(currentCars));
  }
  updateState()
})

removeAllStorage.addEventListener('click', function() {
  localStorage.clear();
  const currentCars = JSON.parse(localStorage.getItem("cars") || "[]");
  localStorage.setItem("cars", JSON.stringify(currentCars));
})
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Стоит что-то выбрать как «единственный источник правды». Например, тот же localStorage.
Тогда все функции будут сначала брать из LS массив машин (или пустой массив).

jsFiddle
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
currentCars чистите тоже. глобальный. в последней функции вы создаете локальную переменную currentCars
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы