所用挂钩的参考文件:
import {default as React, useCallback, useEffect} from 'react';
import StoreSelection from './StoreSelection';
function calculatePrice (cart) {
let updatedPrice = 0;
for (const item of cart){
updatedPrice += parseFloat(item.price) * item.quantity;
}
return updatedPrice;
}
export default function Store ({cart, inventory, setCart, setPrice}) {
useEffect(() => setPrice(calculatePrice(cart)), [cart]);
const cart_addItem = useCallback(item => {
item.quantity ??= 1;
setCart(cart => {
const index = cart.findIndex(currentItem => currentItem.id === item.id);
const updatedCart = [...cart];
if (index >= 0) {
const updatedItem = {...updatedCart[index]};
updatedItem.quantity += item.quantity;
updatedCart[index] = updatedItem;
}
else updatedCart.push(item);
return updatedCart;
});
}, [setCart]);
return (
<div>
<StoreSelection {...{cart_addItem, inventory}}/>
</div>
);
}