
React version 16부터 사용 가능한 리액트의 내장 API
props를 사용하지 않고 필요한 데이터(state)를 쉽게 공유
import { createContext, useContext, useState } from "react";
const cartContext = createContext();
export function CartProvider({ children }) {
const [cart, setCart] = useState([]);
const addToCart = ({ quantity, options, id }) => {
setCart([...cart, { quantity, options, id }]);
};
const removeCart = (id) => {
setCart(cart.filter((el) => el.id !== id));
};
return (
<cartContext.Provider value={{ cart, setCart, addToCart, removeCart }}>
{children}
</cartContext.Provider>
);
}
export function useCart() {
return useContext(cartContext);
}
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
import { BrowserRouter } from "react-router-dom";
import { CartProvider } from "./context/cartContext.jsx";
ReactDOM.createRoot(document.getElementById("root")).render(
<BrowserRouter>
<MenuProvider>
<CartProvider>
<App />
</CartProvider>
</MenuProvider>
</BrowserRouter>
);
import data from "../assets/data";
import { useCart } from "../context/cartContext";
function Cart() {
const { cart } = useCart();
return (
<>
cart.map((el) => (
<CartItem
key={el.id}
item={allMenus.find((menu) => menu.id === el.id)}
options={el.options}
quantity={el.quantity}
/>
)
</>
);
}