From b7bdefba96a264723f11aeb1e29d7d91ddc521f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com>
Date: Tue, 14 Jul 2026 03:01:54 +0800
Subject: [PATCH] =?UTF-8?q?fix(shop):=20=E4=BF=AE=E5=A4=8D=E5=95=86?=
=?UTF-8?q?=E5=93=81=E8=AF=A6=E6=83=85=E9=A1=B5=E5=AD=A4=E7=AB=8B=E2=80=9C?=
=?UTF-8?q?0=E2=80=9D=E6=B8=B2=E6=9F=93=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修正赚取积分、重量和销量条件渲染,避免数字0被渲染成文本节点
- 赚取积分判断改为仅判断数值是否大于0,防止0泄漏
- 重量同样改为判断数值大于0避免显示无效数据
- 销量为0时隐藏销量信息,符合用户需求
- 调整加购按钮尺寸,使其视觉更协调
---
.workbuddy/memory/2026-07-14.md | 19 +++++++++++++++++--
src/pages/shop/category.tsx | 2 +-
src/pages/shop/product-detail.tsx | 8 +++++---
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/.workbuddy/memory/2026-07-14.md b/.workbuddy/memory/2026-07-14.md
index d9d256e..e2fbef7 100644
--- a/.workbuddy/memory/2026-07-14.md
+++ b/.workbuddy/memory/2026-07-14.md
@@ -202,5 +202,20 @@ adapter `/list` 接口忽略分页,一次返回全部收藏;前端 `listShop
2. 导出 base64 数据 URI 常量:`src/assets/icons/index.ts` 中 `CART_ICON_WHITE`
3. `src/pages/shop/index.tsx` 浮动购物车按钮改用 `Image` 组件加载 `CART_ICON_WHITE`(28×28px,`mode='aspectFit'`),图标更清晰
-### 备注
-商品详情页底部操作栏的购物车入口仍使用 emoji `🛒`,若需统一风格可同步替换。
+## 商品详情页出现孤立 "0" 排查修复(2026-07-14)
+
+### 问题
+`pages/shop/product-detail` 价格区域下方出现一个不归属任何标签的孤立 `0`。
+
+### 根因
+`src/pages/shop/product-detail.tsx` 中赚取积分行的条件渲染写成:
+```tsx
+{product.gainIntegral && Number(product.gainIntegral) > 0 && (...)}
+```
+当后端返回 `gainIntegral` 为数字 `0` 时,JSX 短路与运算直接返回 `0`,React 会把它渲染成一个纯文本节点。这就是页面上那个孤立的 `0`。
+
+### 修改
+- **`src/pages/shop/product-detail.tsx`**:
+ - 去掉条件里的 `product.gainIntegral &&`,改成 `{Number(product.gainIntegral) > 0 && (...)}`,避免 `0` 泄漏。
+ - 顺手把配送区域 `goodsWeight` 的同类写法也改成 `{Number(product.goodsWeight) > 0 && (...)}`,防止重量为 0 时同样泄漏。
+ - 另按用户要求「是 0 就不显示」,把销量行也改为 `{Number(product.sales) > 0 && (...)}`,销量为 0 时整条「销量: 0」不渲染。
diff --git a/src/pages/shop/category.tsx b/src/pages/shop/category.tsx
index 40c7394..80b6fbb 100644
--- a/src/pages/shop/category.tsx
+++ b/src/pages/shop/category.tsx
@@ -262,7 +262,7 @@ const CategoryPage: React.FC = () => {
{/* 加购按钮 */}
handleAddToCart(e, item)}
>
+
diff --git a/src/pages/shop/product-detail.tsx b/src/pages/shop/product-detail.tsx
index 5ba9687..58d42d4 100644
--- a/src/pages/shop/product-detail.tsx
+++ b/src/pages/shop/product-detail.tsx
@@ -309,13 +309,15 @@ const ProductDetailPage: React.FC = () => {
)}
{/* 赚取积分 */}
- {product.gainIntegral && Number(product.gainIntegral) > 0 && (
+ {Number(product.gainIntegral) > 0 && (
购买可得 {product.gainIntegral} 积分
)}
- 销量: {product.sales || 0}
+ {Number(product.sales) > 0 && (
+ 销量: {product.sales}
+ )}
库存: {product.stock || 0}
{product.unitName && (
单位: {product.unitName}
@@ -363,7 +365,7 @@ const ProductDetailPage: React.FC = () => {
配送
{deliveryText}
- {product.goodsWeight && Number(product.goodsWeight) > 0 && (
+ {Number(product.goodsWeight) > 0 && (
重量: {product.goodsWeight}kg
)}