Просмотр исходного кода

🐛 fix(mini): 修复立即购买商品信息不更新问题

- 在订单确认页添加对buyNow存储键的检查
- 优先使用立即购买的商品数据
- 使用后清除buyNow存储,避免重复使用旧数据
- 解决切换商品后订单确认页仍显示之前商品信息的问题

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 месяц назад
Родитель
Сommit
96b18b95ba
1 измененных файлов с 32 добавлено и 14 удалено
  1. 32 14
      mini/src/pages/order-submit/index.tsx

+ 32 - 14
mini/src/pages/order-submit/index.tsx

@@ -97,20 +97,38 @@ export default function OrderSubmitPage() {
 
   // 页面加载时获取订单数据
   useEffect(() => {
-    // 从购物车获取数据
-    const checkoutData = Taro.getStorageSync('checkoutItems')
-    const cartData = Taro.getStorageSync('mini_cart')
-    
-    if (checkoutData && checkoutData.items) {
-      setOrderItems(checkoutData.items)
-      setTotalAmount(checkoutData.totalAmount)
-    } else if (cartData && cartData.items) {
-      // 使用购物车数据
-      const items = cartData.items
-      const total = items.reduce((sum: number, item: CheckoutItem) => 
-        sum + (item.price * item.quantity), 0)
-      setOrderItems(items)
-      setTotalAmount(total)
+    // 从立即购买获取数据
+    const buyNowData = Taro.getStorageSync('buyNow')
+
+    if (buyNowData && buyNowData.goods) {
+      // 使用立即购买的商品数据
+      const goods = buyNowData.goods
+      setOrderItems([{
+        id: goods.id,
+        name: goods.name,
+        price: goods.price,
+        image: goods.image,
+        quantity: goods.quantity
+      }])
+      setTotalAmount(buyNowData.totalAmount)
+      // 清除立即购买数据,避免下次进入时重复使用
+      Taro.removeStorageSync('buyNow')
+    } else {
+      // 从购物车获取数据
+      const checkoutData = Taro.getStorageSync('checkoutItems')
+      const cartData = Taro.getStorageSync('mini_cart')
+
+      if (checkoutData && checkoutData.items) {
+        setOrderItems(checkoutData.items)
+        setTotalAmount(checkoutData.totalAmount)
+      } else if (cartData && cartData.items) {
+        // 使用购物车数据
+        const items = cartData.items
+        const total = items.reduce((sum: number, item: CheckoutItem) =>
+          sum + (item.price * item.quantity), 0)
+        setOrderItems(items)
+        setTotalAmount(total)
+      }
     }
 
     // 设置默认地址