mirror of
https://gitea.smigz.com/smiggiddy/odin-codeprojects.git
synced 2025-07-17 06:40:36 -04:00
adding more logic and components
This commit is contained in:
parent
9a7596b2a8
commit
da6d76e598
10 changed files with 109 additions and 83 deletions
47
shopping-cart/src/components/productDetails.jsx
Normal file
47
shopping-cart/src/components/productDetails.jsx
Normal file
|
@ -0,0 +1,47 @@
|
|||
import { useParams, useOutletContext } from "react-router-dom";
|
||||
import Products from "./products";
|
||||
import PropTypes from "prop-types";
|
||||
|
||||
import styles from "./productCollection.module.css";
|
||||
|
||||
export default function ProductDetails() {
|
||||
const [cart, setCart, items, setItems] = useOutletContext();
|
||||
|
||||
const { id } = useParams();
|
||||
const item = items.filter((item) => item.id === id)[0];
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
{item ? (
|
||||
<div className={styles.card}>
|
||||
<Products item={item} cart={cart} setCart={setCart} />
|
||||
<button
|
||||
onClick={() => {
|
||||
addToCart(item, cart, setCart);
|
||||
}}
|
||||
>
|
||||
Add to Cart
|
||||
</button>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function addToCart(item, cart, setCart) {
|
||||
let obj = { ...cart };
|
||||
if (obj[item.id]) {
|
||||
obj[item.id].qty += 1;
|
||||
} else {
|
||||
obj[item.id] = item;
|
||||
obj[item.id].qty = 1;
|
||||
}
|
||||
|
||||
setCart(obj);
|
||||
}
|
||||
|
||||
ProductDetails.propTypes = {
|
||||
item: PropTypes.object,
|
||||
cart: PropTypes.object,
|
||||
setCart: PropTypes.func,
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue