-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathuseShoppingCart.ts
37 lines (32 loc) · 972 Bytes
/
useShoppingCart.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { useState } from "react";
import { ProductInCart, onChangeArg } from "../interfaces/interfaces";
import { products } from "../data/products";
export const useShoppingCardt = () => {
const [shoppingCard, setShoppingCard] = useState<{
[key: string]: ProductInCart;
}>({});
const onProductConstChange = ({ counter, product }: onChangeArg) => {
console.log({ counter });
// console.log(counter, product);
/// los tres puntos trae todo o copia todo el arreglo o el objeto
/// es decir que muestra todos los datos que en este caso ya existen en producto
setShoppingCard((oldShoppinCard) => {
if (counter <= 0) {
delete oldShoppinCard[product.id];
return {
...oldShoppinCard,
};
}
return {
...oldShoppinCard,
[product.id]: { ...product, counter },
};
});
};
return {
products,
onProductConstChange,
shoppingCard,
setShoppingCard,
};
};