Jelajahi Sumber

♻️ refactor(component): 重构ActivitySelect组件代码结构

- 移动getActivityTypeLabel函数到组件顶部,优化代码组织
- 删除重复的防抖搜索effect,减少不必要的状态更新
yourname 4 bulan lalu
induk
melakukan
fa5ef69ded
1 mengubah file dengan 12 tambahan dan 20 penghapusan
  1. 12 20
      src/client/admin/components/ActivitySelect.tsx

+ 12 - 20
src/client/admin/components/ActivitySelect.tsx

@@ -9,6 +9,18 @@ import type { InferResponseType } from "hono/client"
 
 type ActivityResponse = InferResponseType<typeof activityClient.$get, 200>['data'][0]
 
+// 获取活动类型显示标签
+const getActivityTypeLabel = (type: ActivityType) => {
+  switch (type) {
+    case ActivityType.DEPARTURE:
+      return "去程"
+    case ActivityType.RETURN:
+      return "返程"
+    default:
+      return "未知"
+  }
+}
+
 interface ActivitySelectProps {
   value?: number
   onValueChange?: (value: number) => void
@@ -44,15 +56,6 @@ export function ActivitySelect({
     staleTime: 5 * 60 * 1000, // 5分钟缓存
   })
 
-  // 防抖搜索
-  React.useEffect(() => {
-    const timeoutId = setTimeout(() => {
-      setSearchKeyword(searchKeyword)
-    }, 300)
-
-    return () => clearTimeout(timeoutId)
-  }, [searchKeyword])
-
   // 将活动数据转换为 Combobox 选项
   const activityOptions = React.useMemo(() => {
     if (!activitiesData?.data) return []
@@ -63,17 +66,6 @@ export function ActivitySelect({
     }))
   }, [activitiesData])
 
-  // 获取活动类型显示标签
-  const getActivityTypeLabel = (type: ActivityType) => {
-    switch (type) {
-      case ActivityType.DEPARTURE:
-        return "去程"
-      case ActivityType.RETURN:
-        return "返程"
-      default:
-        return "未知"
-    }
-  }
 
   const handleValueChange = (newValue: string) => {
     const numericValue = newValue ? parseInt(newValue, 10) : 0