Как удалить объект из массива (checked, unchecked) rest api fetch
При клике(чеке) я вызываю массив объектов и записываю в массив, а теперь при (анчеке) нужно удалить эти объекты из массива. Не могу понять где я ошибся, в консоли вызываются те же объекты которые мне нужно удалить. Пробовал так же удалять через delete setCategorySub(result.data);
let getDataCategory = async (event) => {
let id = event.currentTarget.id;
if (event.target.checked){
await fetch(`http://api.tmweb.ru/category?filter[parent_id][in]=${id}&filter[type]=0`,{
headers: {
'Accept': 'application/json',
'Authorization': token,
},
})
.then(res => res.json())
.then((result) => {
setCategorySub([...categorySub,...result.data]);
})
}else{
await fetch(`http://api.tmweb.ru/category?filter[parent_id][in]=${id}&filter[type]=0`,{
headers: {
'Accept': 'application/json',
'Authorization': token,
},
})
.then(res => res.json())
.then((result) => {
console.log(result.data)
delete result.data;
})
}
}
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Все полученные данные уже хранятся в состоянии компонент. Необходимо удалить элемент с заданным ID из состояния.
const getDataCategory = async (event) => {
let id = event.currentTarget.id;
if (event.target.checked) {
// Тут запрашиваете данные
} else {
// Удаляете элемент из состояния
setCategorySub((prevData) => { //prevData текущее состояние
return prevData.filter((item) => item.id !== id); // Фильтруем массив и сохраняем как состояние
})
}
}