jordib-product-card
Version:
Este es un paquete de pruebas de despliegue en NPM
32 lines (23 loc) • 935 B
text/typescript
import { useState } from "react";
import { ProductInCart, onChangeArgs } from "../interfaces/interfaces";
export const useShoppingCart = () => {
// Manejar el cart como un objeto, dentro tenemos x cantidad de llaves que son strings y los valores de ese objeto son de tipo Product in cart
const [shoppingCart, setShoppingCart] = useState<{[key:string]:ProductInCart}>({});
const onProductCountChange = ({count, product}:onChangeArgs) => {
// El count es un +1, o, -1
setShoppingCart(oldShoppingCart => {
if(count === 0){
const { [product.id]: toDelete, ...rest} = oldShoppingCart
return rest;
}
return {
...oldShoppingCart,
[product.id]: {...product, count}
}
})
}
return {
shoppingCart,
onProductCountChange
}
}