У меня сейчас проблемы с фильтрацией данных после вызова 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.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или, возможно, больше фрагментов кода или, возможно, изображения состояния.