Это обычный
нативный метод для массивов. К React'у он прямого отношения не имеет.
Смотри по строкам:
const [todo, setTodo] = useState([]) // todo: массив todo'шек. setTodo - сеттер, для изменения переменной todo
const deleteItem = (id) => { // Объявляем функцию deleteItem, которая принимает внутрь id интересующей todo
setTodo( // Устанавливаем новый state для переменной todo, которую объявили выше
todo.filter(item => { // Берем текущее состояние переменной todo.
// filter как forEach проходится по каждому элементу массива.
// Принимает в себя callback вида (item, i, array), где item - текущий элемент (соответствует array[i]), текущий индекс, текущий массив (который обходим)
// В функции callback'е ты должен вернуть булевое значение (true/false). Если true - элемент остается в массиве, если нет - убирается
return item.id !== id // Если id элемента не равен id, который хотим удалить - оставляем элемент в массиве, иначе убираем
})
);
Чтобы было более ясно вот более простой пример, без state в React:
const products = [
{ id: 1, price: 25 },
{ id: 2, price: 50 },
{ id: 3, price: 75 },
{ id: 4, price: 100 },
{ id: 5, price: 125 },
]
// Оставим продукты, которые только с ценой выше или равной 100
const filteredProducts = products.filter(product => product.price >= 100) // [{ id: 4, price: 100 }, { id: 5, price: 125 }]
}