// src/views/Company/components/CompanyTabs/index.js // Tab 容器组件 - 管理 Tab 切换和内容渲染 import React, { useState } from 'react'; import { Card, CardBody, Tabs, TabPanels, TabPanel, Divider, } from '@chakra-ui/react'; import TabNavigation from './TabNavigation'; import { COMPANY_TABS, getTabNameByIndex } from '../../constants'; // 子组件导入(Tab 内容组件) import CompanyOverview from '../CompanyOverview'; import DeepAnalysis from '../DeepAnalysis'; import MarketDataView from '../MarketDataView'; import FinancialPanorama from '../FinancialPanorama'; import ForecastReport from '../ForecastReport'; import DynamicTracking from '../DynamicTracking'; /** * Tab 组件映射 * key 与 COMPANY_TABS 中的 key 对应 */ const TAB_COMPONENTS = { overview: CompanyOverview, analysis: DeepAnalysis, market: MarketDataView, financial: FinancialPanorama, forecast: ForecastReport, tracking: DynamicTracking, }; /** * Tab 容器组件 * * 功能: * - 管理 Tab 切换状态 * - 动态渲染 Tab 导航和内容 * - 触发 Tab 变更追踪 * * @param {Object} props * @param {string} props.stockCode - 当前股票代码 * @param {Function} props.onTabChange - Tab 变更回调 (index, tabName, prevIndex) => void */ const CompanyTabs = ({ stockCode, onTabChange }) => { const [currentIndex, setCurrentIndex] = useState(0); /** * 处理 Tab 切换 */ const handleTabChange = (index) => { const tabName = getTabNameByIndex(index); // 触发追踪回调 onTabChange?.(index, tabName, currentIndex); // 更新状态 setCurrentIndex(index); }; return ( {/* Tab 导航(黑金主题) */} {/* Tab 内容面板 */} {COMPANY_TABS.map((tab) => { const Component = TAB_COMPONENTS[tab.key]; return ( ); })} ); }; export default CompanyTabs;