36 lines
987 B
JavaScript
36 lines
987 B
JavaScript
import { useState, useEffect } from "react";
|
|
|
|
export default function useBasket() {
|
|
const [basket, setBasket] = useState([]);
|
|
|
|
useEffect(() => {
|
|
fetch('http://localhost:5000/basket')
|
|
.then(res => res.json())
|
|
.then(setBasket);
|
|
}, []);
|
|
|
|
const addToBasket = async (item) => {
|
|
const res = await fetch('http://localhost:5000/basket', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(item)
|
|
});
|
|
const newItem = await res.json();
|
|
setBasket([...basket, newItem]);
|
|
};
|
|
|
|
const removeFromBasket = async (id) => {
|
|
await fetch(`http://localhost:5000/basket/${id}`, { method: 'DELETE' });
|
|
setBasket(basket.filter(item => item.id !== id));
|
|
};
|
|
|
|
const clearBasket = async () => {
|
|
for (let item of basket) {
|
|
await fetch(`http://localhost:5000/basket/${item.id}`, { method: 'DELETE' });
|
|
}
|
|
setBasket([]);
|
|
};
|
|
|
|
return { basket, addToBasket, removeFromBasket, clearBasket };
|
|
}
|