Есть массив с объектами задач, по клику кнопки нужно удалить задачу :
Вот код с компонента в котором создано состояние с массивом объектов
//
const deleteTodo = (Todo) => {
const deletedTodo = Todo.filter(item => item.id !== todo.id)
setTodo(deletedTodo)
} // по разному пытался менять состояние todo
//
Пропсы прокинуты в компонент кнопки по удалению:
//
//Функция в самом компоненте с кнопкой -- onClick={() => deleteTodo(todo)}
Пробовал по разному, либо удаляется полностью весь массив и остается на странице 1 пустой элемент, либо не происходит ничего вообще, смотрел в консоли постоянно по условию возвращает либо весь массив либо пустой, но ни как не удаленный элемент, скорее всего не знаю как правильно задать условие.
// Вот сам массив с объектами --
let newTodo = {
title: title,
id: Date.now(),
completed: completed
}
setTodo([...todo, newTodo])
//
Если делаю так const deletedTodo = Todo.filter(item => item.id !== todo[0].id)// указываю индекс элемента то все работает только соответственно удаляется всегда именно нулевой элемент, а не тот ан котором клик
Алексей Догадаев, проблема скорее всего в том что ты в кнопку прокидываешь объект, и у объекта вызываешь метод filter...а если ты прокидываешь массив тудушек и фильтруешь его, тогда с чем ты сравниваешь ? откуда берется todo.id
szQocks, вот у меня вот так было {todo.map((item, index) => {item.title} // это в одном и том же компоненте где массив,
//const BtnCompleted = ({deleteTodo,todo}) => {
return (
deleteTodo(todo)}>X
);
};
export default BtnCompleted;//
это уже в компоненте кнопки по удалению, сейчас попробую как у тебя
Алексей Догадаев, гугли, про туду инфа 100% есть в интернете, тут редко когда на блюдечке преподносят инфу. хотя мне нравится хабр, каким бы он не был, он помог мне с трудностями
szQocks, Да, как и ты мне, большое спасибо, теперь да понял, что с пропсами не работало потому что id не передавалось, ну наверное и это решить можно, больше спасибо еще раз!)