Проблема была решена.
1. Вместо передачи компоненту фильтров функции filterByColor() нужно было передать напрямую setColorFIlter с
useState.
2. Добавить новый эффект, реагирующий на изменение стейта и вызывающий функцию сортировки sortItems()
useEffect(() => {
if (setColorFilter) {
sortItems()
}
}, [colorFilter, sortItems])
3. Саму функцию sortItems() переписать с учетом хука useCallback:
const sortItems = useCallback(() => {
let tempItems = [...items];
// -----> Filter by colors
if (colorFilter) {
tempItems = tempItems.filter(item => item.color.includes(colorFilter));
}
setFilteredItems(tempItems);
console.log(`items are sorted. new array has ${tempItems.length} items`)
}, [colorFilter, items])
И все работает