From f0a6b965b1a529b1f3fc6be688c3913f198baf7e Mon Sep 17 00:00:00 2001 From: IT Fixcomart Date: Tue, 1 Nov 2022 15:56:43 +0700 Subject: Get similar product on client side --- src/pages/shop/product/[slug].js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/pages/shop/product/[slug].js b/src/pages/shop/product/[slug].js index 2ff151fa..b6af8c87 100644 --- a/src/pages/shop/product/[slug].js +++ b/src/pages/shop/product/[slug].js @@ -18,13 +18,10 @@ export async function getServerSideProps(context) { const { slug } = context.query; let product = await getOdoo('/api/v1/product/' + getId(slug)); product = product[0]; - - const similarProducts = await getOdoo(`/api/v1/product/${getId(slug)}/similar?limit=20`); - return {props: {product, similarProducts}}; } -export default function ProductDetail({product, similarProducts}) { +export default function ProductDetail({product}) { const router = useRouter(); const { slug } = router.query; const [selectedVariant, setSelectedVariant] = useState(""); @@ -37,12 +34,21 @@ export default function ProductDetail({product, similarProducts}) { weight: product.weight, attributes: '', }); + const [similarProducts, setSimilarProducts] = useState(null); useEffect(() => { if (product.variants.length == 1) { setSelectedVariant(product.variants[0].id); } - }, [product.variants]); + }, [product]); + + useEffect(() => { + const getSimilarProducts = async () => { + const dataSimilarProducts = await getOdoo(`/api/v1/product/${getId(slug)}/similar?limit=20`); + setSimilarProducts(dataSimilarProducts); + } + getSimilarProducts(); + }, [slug]); useEffect(() => { if (selectedVariant != '') { @@ -164,7 +170,7 @@ export default function ProductDetail({product, similarProducts}) {

Produk Lainnya

- {similarProducts.products.map((product, index) => ())} + {similarProducts?.products?.map((product, index) => ())}
-- cgit v1.2.3