[slug].js
unknown
javascript
3 years ago
3.4 kB
7
Indexable
import React, { useState } from "react"; import { client, urlFor } from "../../lib/client"; import { AiOutlineMinus, AiOutlinePlus, AiFillStar, AiOutlineStar, } from "react-icons/ai"; import Product from "../../components/Product"; const ProductDetails = ({ product, products }) => { const { image, name, details, price } = product; const { index, setIndex } = useState(0); return ( <div> <div className="product-detail-container"> <div> <div className="image-container"> { console.log(image)} <img src={urlFor(image && image[index])} className="product-detail-image" /> </div> <div className="small-images-container"> {image?.map((item, i) => ( <img key={i} src={urlFor(item)} className={i === index ? 'small-image selected-image' : 'small-image'} onMouseEnter={() => setIndex(i)} /> ))} </div> </div> <div className="product-detail-desc"> <h1>{name}</h1> <div className="reviews"> <AiFillStar /> <AiFillStar /> <AiFillStar /> <AiFillStar /> <AiOutlineStar /> <p>(20)</p> </div> <h4>Details:</h4> <p>{details}</p> <p className="price">₹{price}</p> <div className="quantity"> <h3>Quantity:</h3> <p className="quantity-desc"> <span className="minus" onClick=""> <AiOutlineMinus /> </span> <span className="num" onClick=""> 0 </span> <span className="plus" onClick=""> <AiOutlinePlus /> </span> </p> </div> <div className="buttons"> <button type="button" className="add-to-cart" onClick=""> Add to Cart </button> <button type="button" className="buy-now" onClick=""> Buy Now </button> </div> </div> </div> <div className="maylike-products-wrapper"> <h2>You may also like</h2> <div className="marquee"> <div className="maylike-products-container track"> {products.map((item) => ( <Product key={item._id} product={item} /> ))} </div> </div> </div> </div> ); }; export const getStaticPaths = async () => { const query = `*[_type == "product"] { slug { current } } `; const products = await client.fetch(query); const paths = products.map((product) => ({ params: { slug: product.slug.current, }, })); return { paths, fallback: "blocking" }; }; export const getStaticProps = async ({ params: { slug }}) => { const query = `*[_type == "product" && slug.current == '${slug}'][0]`; const productsQuery = '*[_type == "product"]' const product = await client.fetch(query); const products = await client.fetch(productsQuery); // console.log(product); return { props: { products, product } } } export default ProductDetails;
Editor is loading...