fix(front) Добавил строку категорий и карточек товара

This commit is contained in:
2026-06-09 17:30:21 +03:00
parent 04b1be4c54
commit f325b6b31f
5 changed files with 145 additions and 11 deletions
+25 -9
View File
@@ -1,6 +1,8 @@
import PageLayout from "../components/PageLayout";
import * as api from "../api/index";
import { useState, useEffect } from "react";
import CategoryTabs from "../components/CategoryTabs";
import CardItem from "../components/CardItem";
export default function Shop() {
const [items, setItems] = useState([]);
@@ -10,29 +12,43 @@ export default function Shop() {
useEffect(() => {
Promise.all([api.getAllItems(), api.getAllCategories()])
.then((itemsRes, categoriesRes) => {
setItems(itemsRes.data);
setCategories(categoriesRes.data);
.then(([itemsRes, categoriesRes]) => {
setItems(itemsRes?.data || []);
setCategories(categoriesRes?.data || []);
setLoading(false);
})
.catch((err) => {
console.error("Ошибка при загрузке товара", err);
alert(err);
setLoading(false);
});
}, []);
const filteredItems =
activeCategory === "all"
? items
: items.fitler(
(item) =>
item.category?.toLowerCase() === activeCategory.toLowerCase(),
);
? items || []
: (items || []).filter((item) => {
if (!item || !item.category) return false;
return item.category.toLowerCase() === activeCategory.toLowerCase();
});
const handleAddToCart = (product, selectedWeight) => {
console.log(`Добавлен товар ${product.name}, Вес ${selectedWeight} кг`);
};
return (
<PageLayout>
<main className="px-16 grow w-full">
<div className="flex flex-row text-white"></div>
<h1 className="text">Ассортимент</h1>
<CategoryTabs
categories={categories || []}
activeCategory={activeCategory}
onSelectCategory={setActiveCategory}
/>
{filteredItems.map((item) => (
<CardItem key={item.id} item={item} onAddToCart={handleAddToCart} />
))}
</main>
</PageLayout>
);