next.js 用户选择后,我如何路由到单个产品页面

guicsvcw  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(132)

我有这个主要的产品页面,从本地JSON文件中获取所有产品

interface productItem {
      id: number;
      name: string;
      image: string;
      price?: string;
      prices: {
        half: string;
        full: string;
      };
      categories: string;
    }

  const [products, setProducts] = useState("Cakes");
  const [sltproducts, setSltProducts] = useState<productItem[]>([]);

  useEffect(() => {
    const fetchProduct = () => {
      fetch("items.json")
        .then((response) => response.json())
        .then((productdata) => {
          const productcakes = productdata.Cakes.map((item: productItem) => ({
            ...item,
            categories: "Cake",
          }));
           const productmemorella = productdata.Memorella.map((item: productItem) => ({
             ...item,
             categories: "Memorella",
           }));
           const producticecream = productdata.Ice_Cream.map(
             (item: productItem) => ({
               ...item,
               categories: "Ice Cream",
             })
          );
          const productpastries = productdata.Pastries.map(
            (item: productItem) => ({
              ...item,
              categories: "Pastries",
            })
          );
          setSltProducts([...productcakes,...productmemorella, ...producticecream, ...productpastries]);
        })
        .catch((error) => {
          console.error("Error fetching items:", error);
        });
    }
    fetchProduct();
  }, [])

这是我的卡组件在同一页上

{sltproducts
                .filter((product) => product.categories === "Cake")
                .map((prdct) => (
                  <Link
                    href={`/Product/${prdct.categories}/${prdct.id}`}
                    key={prdct.id}
                    className="product-page-selected-cakes-card"
                  >
                    <img src={prdct.image} alt="" />
                    <div className="product-price">
                      <h5>{prdct.name}</h5>
                      <hr />
                      <p>₹{prdct.prices.half}</p>
                    </div>
                  </Link>

这是我的单一产品文件夹,我给予了[]动态路由

我如何获取一个单一的产品是由用户选择这个单一的产品页面。请注意,“产品。类别”是因为我有多个部分,即蛋糕,糕点等

6za6bjd0

6za6bjd01#

我猜,你是用错误的方式使用目录,现在,它的Product/[id]/page.tsx,但它应该是Product/[categories]/[id]/page.tsx,然后把你的内容在该页面文件。

相关问题