Skip to content

Commit

Permalink
basket fix
Browse files Browse the repository at this point in the history
  • Loading branch information
o6ez9na committed Dec 1, 2024
1 parent fed0305 commit 466cfcd
Showing 1 changed file with 15 additions and 22 deletions.
37 changes: 15 additions & 22 deletions frontend/src/components/basket-context/BasketContext.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import React, { createContext, useState, useContext, useEffect } from "react";

// Создаем контекст
const BasketContext = createContext();

export const BasketProvider = ({ children }) => {
Expand All @@ -11,32 +10,27 @@ export const BasketProvider = ({ children }) => {

const [basketItems, setBasketItems] = useState(loadBasketItems);

// Сохраняем корзину в localStorage при изменении состояния
// Сохраняем корзину в localStorage при любом изменении состояния
useEffect(() => {
if (basketItems.length > 0) {
localStorage.setItem("basketItems", JSON.stringify(basketItems));
}
localStorage.setItem("basketItems", JSON.stringify(basketItems));
}, [basketItems]);

const addToBasket = (item) => {
const currentDate = new Date().toLocaleDateString("ru-RU"); // Получаем дату в формате "день.месяц.год"
const currentDate = new Date().toLocaleDateString("ru-RU");

setBasketItems((prevItems) => {
// Проверяем, есть ли уже такой элемент в корзине
const exists = prevItems.some((i) => i.id === item.id);
if (exists) {
// Если элемент уже есть, просто возвращаем текущий список
return prevItems.map((i) =>
i.id === item.id ? { ...i, dateAdded: currentDate } : i
);
}
// Если элемента нет, добавляем его
return [...prevItems, { ...item, dateAdded: currentDate }];
});
};

const removeFromBasket = (id) => {
setBasketItems((prevItems) => prevItems.filter((item) => item.id !== id)); // Удаляем элемент по id
setBasketItems((prevItems) => prevItems.filter((item) => item.id !== id));
};

const totalItems = basketItems.length;
Expand All @@ -46,19 +40,18 @@ export const BasketProvider = ({ children }) => {
};

return (
<BasketContext.Provider
value={{
totalItems,
basketItems,
addToBasket,
removeFromBasket,
clearBasket
}}
>
{children}
</BasketContext.Provider>
<BasketContext.Provider
value={{
totalItems,
basketItems,
addToBasket,
removeFromBasket,
clearBasket,
}}
>
{children}
</BasketContext.Provider>
);
};

// Хук для использования контекста
export const useBasket = () => useContext(BasketContext);

0 comments on commit 466cfcd

Please sign in to comment.