import { useEffect, useState } from "react"; import { useParams, useNavigate } from "react-router-dom"; import { useAppDispatch, useAppSelector } from "../../app/hooks"; import { fetchProductById } from "../../features/catalog/productsSlice"; import styles from "./ItemPage.module.css"; import type { CategoryAtributes, CategoryAtrVals } from "../../types/categories"; import Button from "../../components/Button/Button"; import PriceLisForm from "../../components/PriceLisForm/PriceLisForm"; const ItemPage = () => { const { id } = useParams(); const dispatch = useAppDispatch(); const navigate = useNavigate(); const { items, loading } = useAppSelector((state) => state.products); const { items: cats, selectedCategoryId } = useAppSelector(s => s.categories); const [activeTab, setActiveTab] = useState<"desc" | "chars">("desc"); const [open, setOpen] = useState(false); useEffect(() => { if (id) dispatch(fetchProductById(id)); }, [id]); const product = items.find((item) => item.id === Number(id)); const category = cats.find((cat) => cat.id === Number(selectedCategoryId)) if ((loading || !product)) return
Загрузка...
; if(!category) return
Загрузка...
; return (
setOpen(false)}/>
{product.name}
ГЛАВНАЯ / {category?.name} / {product.name}

{product.name}

{product.description}

{activeTab === "desc" && (

ОПИСАНИЕ

{product.description}

)} {activeTab === "chars" && (

ХАРАКТЕРИСТИКИ

{category.atributes?.map((attr: CategoryAtributes) => (
{attr.name} {attr.vals?.map((val: CategoryAtrVals) => (
{val.val}
))}
))}
)}
); } export default ItemPage;