// context 생성
export const CartContext= createContext({
// 자동 완성을 도와주는 기능
items:[],
addItemToCart : ()=>{},
updateCartItemQuantity: ()=>{},
});
export default function App(){
...
// 전달할 데이터
const ctxValue = {
items: shoppingCartState.items,
addItemToCart : handleAddItemToCart,
updateCartItemQuantity:handleUpdateCartItemQuantity,
}
return (
<CartContext.Provider value={ctxValue}>
<Header/>
<Shop>
{DUMMY_PRODUCTS.map((product) => (
<li key={product.id}>
<Product {...product} />
</li>
))}
</Shop>
</CartContext.Provider>
);
}
4-1)
export default function Header() {
...
return (
<CartContext.Consumer>
{(cartCtx)=>{
const cartQuantity = cartCtx.items.length;
if (cartQuantity > 0) {
modalActions = (
<>
<button>Close</button>
<button>Checkout</button>
</>
);
}
return (
<CartModal
ref={modal}
title="Your Cart"
actions={modalActions}
/>
<header id="main-header">
<div id="main-title">
<img src="logo.png" alt="Elegant model" />
<h1>Elegant Context</h1>
</div>
<p>
<button onClick={handleOpenCartClick}>Cart ({cartQuantity})</button>
</p>
</header>
);
</CartContext.Consumer>
)
}
4-2)
export default function Header() {
const {items} =useContext(CartContext); const cartQuantity = items.length;
if (cartQuantity > 0) {
modalActions = (
<>
<button>Close</button>
<button>Checkout</button>
</>
);
}
...
return (
<>
<CartModal
ref={modal}
title="Your Cart"
actions={modalActions}
/>
<header id="main-header">
<div id="main-title">
<img src="logo.png" alt="Elegant model" />
<h1>Elegant Context</h1>
</div>
<p>
<button onClick={handleOpenCartClick}>Cart ({cartQuantity})</button>
</p>
</header>
</>
);
}