Как удалить элемент из массива, сохраненный в локальном хранилище?

#reactjs #redux #local-storage

Вопрос:

Я пытаюсь удалить элемент из списка избранного, сохраненного в государственном и локальном хранилище

action.js

 export function addFavoriteAction(personaje) {
    return (dispatch) => {
        dispatch( addFavorite(personaje));
    }
}

const addFavorite = (personaje) => ({
    type: ADD_FAV,
    payload: personaje
});

export function removeFavoriteAction(personaje) {
    return (dispatch) => {
        dispatch( removeFavorite(personaje));

        const favArray  = JSON.parse(localStorage.getItem('favorites'))
        console.log(favArray)
        favArray.splice(favArray.includes(personaje), 1)
        localStorage.setItem("list", JSON.stringify(favArray));
    }
}

const removeFavorite = (personaje) => ({
    type: REMOVE_FAV,
    payload: id
});
 

У меня также есть эта функция, компонент для обработки, который используется для отправки, но я не уверен в этом на 100% :

   const handleFav = () => {

    if(favorites.map(favorite => favorite.id === perSelect.id)) {
      
      dispatch( removeFavoriteAction(perSelect));
    } else {
      dispatch( addFavoriteAction(perSelect));
    }
  }
 

Комментарии:

1. Ваша настройка redux не идеальна. Взгляните на руководство по стилю Redux

Ответ №1:

Вы можете использовать этот Array.filter() метод

  localStorage.setItem("list", JSON.stringify(favArray.filter(fav => fav.id !== id)));