Ответы пользователя по тегу React
  • Почему фильтр срабатывает только после второго клика?

    @Nivaech Автор вопроса
    Проблема была решена.
    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])


    И все работает
    Ответ написан
    Комментировать
  • Можно ли передавать this propsами?

    @Nivaech
    Можно использовать spread-оператор
    Посмотрите здесь.
    https://riptutorial.com/reactjs/example/13689/pass...
    Ответ написан
    Комментировать