Преглед изворни кода

♻️ refactor(category): 优化广告数据获取逻辑

- 引入 `useAuth` hook 以获取用户登录状态
- 为广告查询添加 `enabled` 选项,仅在用户登录时执行
- 改进错误处理,在控制台输出调试信息并包含状态码

♻️ refactor(index): 优化首页广告数据获取逻辑

- 为广告查询添加 `enabled` 选项,仅在用户登录时执行
- 改进错误处理,在控制台输出调试信息并包含状态码
yourname пре 3 недеља
родитељ
комит
34b236786d
2 измењених фајлова са 8 додато и 2 уклоњено
  1. 5 1
      mini/src/pages/category/index.tsx
  2. 3 1
      mini/src/pages/index/index.tsx

+ 5 - 1
mini/src/pages/category/index.tsx

@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
 import { View } from '@tarojs/components';
 import { useQuery } from '@tanstack/react-query';
 import { goodsCategoryClient, advertisementClient } from '@/api';
+import { useAuth } from '@/utils/auth';
 import CategorySidebar from '@/components/category/CategorySidebar';
 import CategorySidebarItem from '@/components/category/CategorySidebarItem';
 import CategoryTabbar, { TabItem } from '@/components/category/CategoryTabbar';
@@ -21,6 +22,7 @@ type AdvertisementResponse = InferResponseType<typeof advertisementClient.$get,
 type Advertisement = AdvertisementResponse['data'][0]
 
 const CategoryPage: React.FC = () => {
+  const { isLoggedIn } = useAuth();
   const [activeCategoryIndex, setActiveCategoryIndex] = useState<number>(0);
   const [activeSubCategoryId, setActiveSubCategoryId] = useState<string>('');
   const [toastVisible, setToastVisible] = useState<boolean>(false);
@@ -136,11 +138,13 @@ const CategoryPage: React.FC = () => {
         }
       });
       if (response.status !== 200) {
-        throw new Error('获取广告数据失败');
+        console.debug('分类页广告API响应状态:', response.status, response.statusText);
+        throw new Error(`获取广告数据失败 (状态码: ${response.status})`);
       }
       return response.json();
     },
     staleTime: 5 * 60 * 1000,
+    enabled: isLoggedIn,
   });
 
   //console.log("categoryData:",categoryData);

+ 3 - 1
mini/src/pages/index/index.tsx

@@ -38,11 +38,13 @@ const HomePage: React.FC = () => {
         }
       })
       if (response.status !== 200) {
-        throw new Error('获取广告数据失败')
+        console.debug('广告API响应状态:', response.status, response.statusText)
+        throw new Error(`获取广告数据失败 (状态码: ${response.status})`)
       }
       return response.json()
     },
     staleTime: 5 * 60 * 1000, // 5分钟缓存
+    enabled: isLoggedIn,
   })
 
   const {