Вам бы жс подучить, прежде чем за реакт браться. Тривиальные примеры же.
Зачем в свойство searchInput я как значение передаю свойство searchInput?
Это уже к вас вопрос - зачем? Можно было просто:
({ searchInput, startDataArray: data, category })
Почему свойству startDataArray передаются аж два значения : data и category? Разве можно свойству обьекта давать два значения? Если да, то зачем в конкретном случае так сделали?
Запятую после data не видим?
data - это просто "псевдоним" для startDataArray, чтоб меньше буковок писать, category - просто отдельный параметр.
Почему в даном случае в метод filter передали аргументом функцию updater а не обьект?
Какой updater передали? Вы о чем вообще? filter принимает колбэк, который должен возвращать true/false соответственно. С чего вы взяли что туда нужно передавать объект?