Parcourir la source

♻️ refactor(order): optimize order data loading logic

- separate address loading into independent useEffect hook for better code organization
- add null check for checkoutData to avoid potential errors
- add else if chain for different data sources (buyNow > checkout > cart)
- add storage cleanup for checkoutItems after using

🔧 chore(order): remove commented debug code

- remove commented console.log statements in goods-detail page
- remove commented debug logs in order-submit page
- clean up commented buyNowData variable in goods-detail
yourname il y a 1 mois
Parent
commit
116cc765f4
2 fichiers modifiés avec 29 ajouts et 10 suppressions
  1. 3 0
      mini/src/pages/goods-detail/index.tsx
  2. 26 10
      mini/src/pages/order-submit/index.tsx

+ 3 - 0
mini/src/pages/goods-detail/index.tsx

@@ -189,6 +189,9 @@ export default function GoodsDetailPage() {
       totalAmount: currentPrice * quantity
     })
 
+    // const buyNowData = Taro.getStorageSync('buyNow')
+    // console.log("buyNowbefore:",buyNowData)
+
     Taro.navigateTo({
       url: '/pages/order-submit/index'
     })

+ 26 - 10
mini/src/pages/order-submit/index.tsx

@@ -93,10 +93,16 @@ export default function OrderSubmitPage() {
     }
   })
 
-  // 页面加载时获取订单数据
+  // 页面加载时获取订单数据 - 只执行一次
   useEffect(() => {
     // 从立即购买获取数据
     const buyNowData = Taro.getStorageSync('buyNow')
+    const checkoutData = Taro.getStorageSync('checkoutItems')
+    const cartData = Taro.getStorageSync('mini_cart')
+
+    // console.log("buyNowData",buyNowData)
+    // console.log("checkoutItems",checkoutData)
+    // console.log("mini_cart",cartData)
 
     if (buyNowData && buyNowData.goods) {
       // 使用立即购买的商品数据
@@ -111,25 +117,35 @@ export default function OrderSubmitPage() {
       setTotalAmount(buyNowData.totalAmount)
       // 清除立即购买数据,避免下次进入时重复使用
       Taro.removeStorageSync('buyNow')
-    } else {
+    }
+    else if(checkoutData&&checkoutData.items)
+    {
       // 从购物车获取数据
-      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) {
+
+        Taro.removeStorageSync('checkoutItems')
+      }
+       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)
-      }
-    }
 
-    // 设置默认地址
+        Taro.removeStorageSync('mini_cart')
+  }
+    else
+    {
+       // 如果没有立即购买数据,清空订单项
+       setOrderItems([])
+       setTotalAmount(0)
+     }
+  }, []) // 空依赖数组,确保只执行一次
+
+  // 设置默认地址 - 单独处理地址数据变化
+  useEffect(() => {
     if (addresses?.data) {
       const defaultAddress = addresses.data.find(addr => addr.isDefault === 1)
       setSelectedAddress(defaultAddress || addresses.data[0] || null)