Лучший способ удалить определенный элемент в AsyncStorage - PullRequest
0 голосов
/ 29 июня 2018

Я храню массив объектов в AsyncStorage и хотел бы узнать, как лучше всего удалить конкретный объект. Прямо сейчас я передаю идентификатор своей функции, а затем перебираю массив для соответствия идентификатору и удаляю объект, а затем массив в AsyncStorage обновляется. Кажется, это работает нормально, но мне интересно, если это оптимально или есть лучший способ сделать это?

Моя функция сейчас:

  export function removeData(id) {

    AsyncStorage.getItem('@books')
    .then((books) => {
    const updatedBooks = (JSON.parse(books))

        for (let i = 0; i < updatedBooks.length; i++) {
           if(updatedBooks[i].id == id) {
              updatedBooks.splice(i, 1);
          }
      }
      AsyncStorage.setItem('@books', JSON.stringify(updatedBooks));

   })
}

Моя функция для добавления данных в AsyncStorage:

    export function addData(book) {

    AsyncStorage.getItem('@books')
    .then((books) => {
    const b = books ? JSON.parse(books) : [];
    b.push(book);
    AsyncStorage.setItem('@books', JSON.stringify(b));
  });  
}

Кнопка добавления данных с образцами данных для отображения структуры:

  <Button 
        title = "Add book"
        onPress={() => addData({
            id: 1,
            title: 'Harry Potter',
            author:'J.K. Rowling',
            thumbnail:'https://covers.openlibrary.org/w/id/7984916-M.jpg',
        })

1 Ответ

0 голосов
/ 29 июня 2018

Для удаления одного элемента

AsyncStorage.removeItem('key', (err) => {
  // key 'key' will be removed, if they existed
  // callback to do some action after removal of item
});

Для удаления нескольких элементов

let keys = ['k1', 'k2'];
AsyncStorage.multiRemove(keys, (err) => {
  // keys k1 & k2 removed, if they existed
  // callback to do some action after removal of item
});

Справка:

Метод RemoveItem
Метод MultiRemove

...