完成购物车功能

This commit is contained in:
2025-07-18 19:42:01 +08:00
parent 22d4ffe2fb
commit 796b5af67d
9 changed files with 479 additions and 51 deletions

View File

@@ -8,6 +8,7 @@ import {getShopGoods} from "@/api/shop/shopGoods";
import {Swiper} from '@nutui/nutui-react-taro'
import {wxParse} from "@/utils/common";
import "./index.scss";
import {useCart} from "@/hooks/useCart";
const GoodsDetail = () => {
const [goods, setGoods] = useState<ShopGoods | null>(null);
@@ -15,6 +16,21 @@ const GoodsDetail = () => {
const router = Taro.getCurrentInstance().router;
const goodsId = router?.params?.id;
// 使用购物车Hook
const { cartCount, addToCart } = useCart();
// 处理加入购物车
const handleAddToCart = () => {
if (!goods) return;
addToCart({
goodsId: goods.goodsId!,
name: goods.name || '',
price: goods.price || '0',
image: goods.image || ''
});
};
useEffect(() => {
if (goodsId) {
getShopGoods(Number(goodsId))
@@ -100,8 +116,9 @@ const GoodsDetail = () => {
height: "32px",
top: "50px",
right: "110px",
}}>
<Badge value={8} top="-2" right="2">
}}
onClick={() => Taro.navigateTo({url: '/pages/cart/cart'})}>
<Badge value={cartCount} top="-2" right="2">
<div style={{display: 'flex', alignItems: 'center'}}>
<Cart size={16}/>
</div>
@@ -181,7 +198,7 @@ const GoodsDetail = () => {
</div>
<div className={'buy-btn mx-4'}>
<div className={'cart-add px-4 text-sm'}
onClick={() => Taro.showToast({title: '加入购物车成功', icon: 'success'})}>
onClick={() => handleAddToCart()}>
</div>
<div className={'cart-buy pl-4 pr-5 text-sm'}
onClick={() => Taro.navigateTo({url: '/shop/orderConfirm/index'})}>