// src/views/Company/components/CompanyOverview/hooks/useManagementData.ts // 管理团队数据 Hook - 用于管理团队 Tab import { useState, useEffect, useCallback } from "react"; import { logger } from "@utils/logger"; import axios from "@utils/axiosConfig"; import type { Management } from "../types"; interface ApiResponse { success: boolean; data: T; } interface UseManagementDataResult { management: Management[]; loading: boolean; error: string | null; } /** * 管理团队数据 Hook * @param stockCode - 股票代码 */ export const useManagementData = (stockCode?: string): UseManagementDataResult => { const [management, setManagement] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const loadData = useCallback(async () => { if (!stockCode) return; setLoading(true); setError(null); try { const { data: result } = await axios.get>( `/api/stock/${stockCode}/management?active_only=true` ); if (result.success) { setManagement(result.data); } else { setError("加载管理团队数据失败"); } } catch (err) { logger.error("useManagementData", "loadData", err, { stockCode }); setError("网络请求失败"); } finally { setLoading(false); } }, [stockCode]); useEffect(() => { loadData(); }, [loadData]); return { management, loading, error }; };