Не работает useState

введите сюда описание изображенияВсем привет! Несколько дней не могу понять в чем проблема. Пишу ToDo лист, в котором должна быть функция удаления некоторых элементов по нажатию кнопки. Пишу useState, и он не удаляет. Почему то не работает setState. Если вывожу в консоль copy, то показывает что элементы массива удаляются, но если же вывожу сам st, то он вообще не меняется. Вот сам код:

const data = [
        {
            title: "Finish essay collaboration",
            isCompleted: false,
            id: 1
        },
        {
            title: "Read next chapter of the book",
            isCompleted: false,
            id: 2
        },
        {
            title: "Send the finished assignment",
            isCompleted: false,
            id: 3
        },]
const ToDo = ()=>{

    const [st, setSt] = useState(data)
    const del = (id)=>{
        const copy = [...st]
        const current = copy.filter(t=> t.id !==id)
        setSt(current)
        console.log(current)
    } 

Ответы (1 шт):

Автор решения: Listopad02

У вас есть массив data - он не меняется. Также есть состояние st, которое принимает значение data. Соответственно, при фильтрации удаляются элементы из самого состояния, а массив data остается нетронутым. Нужно делать цикл по изменяемому состоянию, а не неизменяемому объекту:

return (
    <>
        {st.map(d=><ToDoItem key={d.id} da={d} del={del}/>)} 
    </>
)
→ Ссылка