localStorage.removeItem на основе значения - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь добавить удаление учетной записи в свое приложение. Я храню учетные записи, используя один ключ с несколькими значениями на основе API.

Вот как я могу добавить аккаунт:

addAccount(state,account){
    state.accounts[account.apikey] = account;
    localStorage.setItem(
        "accounts",
        JSON.stringify(state.accounts)
    );  
},

Вот так выглядит мой localStorage:

key: accounts
{  
   "API Key 1":{ a bunch of info },
   "Api Key 2":{ a bunch of info }
}

Мои попытки удаления учетной записи на основе ключа API:

removeAccount(state,account){
    localStorage.removeItem(account.apikey);
    localStorage.removeItem(JSON.stringify(state.accounts));
    localStorage.removeItem(state);
    localStorage.removeItem(account);
    localStorage.removeItem(state.accounts[account.apikey]);
}

Ни один из этих способов фактически не удаляет значение. Есть идеи, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете использовать localStorage.removeItem() только для удаления всего localStorage записей.То, что вы пытаетесь сделать, это удалить part из записи localStorage.Единственный способ сделать это - извлечь объект, удалить ключ, как обычный объект JS, а затем заново установить запись localStorage:

removeAccount(state, account){
  const accounts = JSON.parse(localStorage.getItem('accounts'));
  delete accounts[account.apikey];
  localStorage.setItem("accounts", JSON.stringify(accounts));
}
0 голосов
/ 07 сентября 2018

Данные в localStorage хранятся в виде строки. Поэтому вам нужно прочитать всю строку, удалить элемент, а затем записать его обратно:

let oldLocalStorage = JSON.parse(localStorage['accounts']);
// Do something to oldLocalStorage, which is the JS object

// Write back to local storage
localStorage.setItem(
        "accounts",
        JSON.stringify(oldLocalStorage)
);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...