#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)));