Я пытаюсь добавить в свое приложение удаление учетной записи. Я храню учетные записи с использованием одного ключа с несколькими значениями на основе 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]);
}
Ни один из этих способов на самом деле не удаляет значение. Есть идеи, что мне может не хватать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Данные в 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)
);
Вы можете использовать localStorage.removeItem() только для удаления всех записей localStorage. Вы пытаетесь удалить часть записи localStorage. Единственный способ сделать это - получить объект, удалить ключ, как обычный объект JS, а затем заново установить запись localStorage:
removeAccount(state, account){
const accounts = JSON.parse(localStorage.getItem('accounts'));
delete accounts[account.apikey];
localStorage.setItem("accounts", JSON.stringify(accounts));
}
Именно так. Спасибо!
Вам нужно получить
accountsизlocalStorage,JSON.parse()это, удалить учетную запись, сноваJSON.stringify()обновленный объект учетных записей и снова установитьaccounts.localStorageнеглубокий.