Проблемы с фильтрацией данных после вызова API - PullRequest
0 голосов
/ 29 марта 2020

У меня сейчас проблемы с фильтрацией данных после вызова API.

Прежде чем я научился Nodejs Я моделирую базу данных с помощью простой переменной, которая содержит все данные. Вы можете просто щелкнуть любую категорию и щелкнуть фильтр, который находится внизу страницы (красная кнопка), и отфильтрованные продукты будут отображены (ниже - песочница):

https://codesandbox.io/s/cranky-meadow-35z94

После изучения Node я создал базу данных для хранения всех данных. Пример этой песочницы будет ниже:

https://codesandbox.io/s/pensive-browser-vylk2

В частности, то, что не фильтруется, это опция пола (во второй песочнице).

Вот моя функция:

handleFormSubmit = (event) => {
        //event.preventDefault();

        const selectedSizes = [...this.selectedCheckboxes];

        let shallowCopy = [...this.props.products];

        let filteredProducts = shallowCopy.filter(product =>
            selectedSizes.every(size =>
                product.stock.some(s => s.stock > 0 && s.size === size)
            )
        );



         let filteredGender = filteredProducts.filter(product => {
                return product.gender.some((item, idx, arr) => {
                    return item[this.selectedGender] === false ? null : product;
                });
            });


        let filteredData = filteredGender.filter(product => {
            return product.brand.includes(this.state.activeBrand);
        });

        let sortedPrice = filteredData.sort((a, b) => {
            return this.state.sortBy === "min"
                ? a.price - b.price
                : b.price - a.price;
        });

        this.setState(prevState => ({
            products: sortedPrice
        })
    }; 

Фильтрующая часть функций:

let filteredGender = filteredProducts.filter(product => {
                    return product.gender.some((item, idx, arr) => {
                        return item[this.selectedGender] === false ? null : product;
                    });
                });

Я считаю, что может быть проблема с методом жизненного цикла, который я используя или, возможно, я использую слишком много фильтров. Буду признателен, если кто-нибудь может предоставить какой-либо вклад. Возможно, пример кода фильтрации после вызова API.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или, возможно, больше фрагментов кода или, возможно, изображения состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...