import { createContext, useEffect, useState } from "react";
// import { createContext } from "react";
import { food_list } from "../assets/assets";
export const StoreContext = createContext(null);
const StoreContextProvider = (props) => {
const [cartItems, setCartItems] = useState({});
const addToCart = (itemId) => {
if (!cartItems[itemId]) {
setCartItems((prev) => ({ ...prev, [itemId]: 1 }))
} else {
setCartItems((prev) => ({ ...prev, [itemId]: prev[itemId] + 1 }))
}
}
const removeFromCart = (itemId) => {
setCartItems((prev) => ({ ...prev, [itemId]: prev[itemId] - 1 }))
}
useEffect(()=> {
console.log(cartItems);
}, [cartItems])
const contextValue = {
food_list,
cartItems,
setCartItems,
addToCart,
removeFromCart
};
return (
<StoreContext.Provider value={contextValue}>
{props.children}
</StoreContext.Provider>
);
};
export default StoreContextProvider;
#ReactJs
1 messages · Page 1 of 1 (latest)
// import React, { useContext, useState } from 'react'
import React, { useContext } from 'react'
import './FoodItem.css'
import { assets } from '../../assets/assets'
import { StoreContext } from '../../context/StoreContext';
const FoodItem = ({ id, name, price, description, image }) => {
// const [itemCount, setItemCount] = useState(0);
const {cartItems, addToCart, removeFromCart} = useContext(StoreContext);
return (
<div className="food-item">
<div className="food-item-img-container">
<img className="food-item-image" src={image} alt="" />
{
!cartItems[id]
? <img className='add' onClick={()=> addToCart(id)} src={assets.add_icon_white} alt="" />
: <div className="food-item-counter">
<img onClick={()=> removeFromCart(id)} src={assets.remove_icon_red} alt="remove" />
<p>{cartItems[id]}</p>
<img onClick={()=> addToCart(id)}src={assets.add_icon_green} alt="add" />
</div>
}
</div>
<div className="food-item-info">
<div className="food-item-name-rating">
<p>{name}</p>
<img src={assets.rating_starts} alt="Rating stars" />
</div>
<p className="food-item-desc">{description}</p>
</div>
<p className="food-item-price">${price}</p>
</div>
)
}
export default FoodItem