- 删除旧的 BasicInfoTab.js (~1000行) - 新建 BasicInfoTab/ 目录,拆分为 10 个 TypeScript 文件: - index.tsx: 主组件(可配置 Tab) - config.ts: Tab 配置 + 黑金主题 - utils.ts: 格式化工具函数 - components/: 5 个面板组件 + LoadingState - 主组件支持 enabledTabs、defaultTabIndex、onTabChange - 应用黑金主题,支持懒加载 (isLazy) - 更新 types.ts 添加 ActualControl、Concentration 等类型字段 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
// src/views/Company/components/CompanyOverview/index.tsx
|
||
// 公司概览 - 主组件(组合层)
|
||
// 懒加载优化:只加载头部卡片数据,BasicInfoTab 内部懒加载各 Tab 数据
|
||
|
||
import React from "react";
|
||
import { VStack, Spinner, Center, Text } from "@chakra-ui/react";
|
||
|
||
import { useBasicInfo } from "./hooks/useBasicInfo";
|
||
import CompanyHeaderCard from "./CompanyHeaderCard";
|
||
import type { CompanyOverviewProps } from "./types";
|
||
|
||
// 子组件(暂保持 JS)
|
||
import BasicInfoTab from "./BasicInfoTab";
|
||
|
||
/**
|
||
* 公司概览组件
|
||
*
|
||
* 功能:
|
||
* - 显示公司头部信息卡片(useBasicInfo)
|
||
* - 显示基本信息 Tab(内部懒加载各子 Tab 数据)
|
||
*
|
||
* 懒加载策略:
|
||
* - 主组件只加载 basicInfo(1 个 API)
|
||
* - BasicInfoTab 内部根据 Tab 切换懒加载其他数据
|
||
*/
|
||
const CompanyOverview: React.FC<CompanyOverviewProps> = ({ stockCode }) => {
|
||
const { basicInfo, loading, error } = useBasicInfo(stockCode);
|
||
|
||
// 加载状态
|
||
if (loading && !basicInfo) {
|
||
return (
|
||
<Center h="300px">
|
||
<VStack spacing={4}>
|
||
<Spinner size="xl" color="blue.500" thickness="4px" />
|
||
<Text>正在加载公司概览数据...</Text>
|
||
</VStack>
|
||
</Center>
|
||
);
|
||
}
|
||
|
||
// 错误状态
|
||
if (error && !basicInfo) {
|
||
return (
|
||
<Center h="300px">
|
||
<Text color="red.500">{error}</Text>
|
||
</Center>
|
||
);
|
||
}
|
||
|
||
return (
|
||
<VStack spacing={6} align="stretch">
|
||
{/* 公司头部信息卡片 */}
|
||
{basicInfo && <CompanyHeaderCard basicInfo={basicInfo} />}
|
||
|
||
{/* 基本信息内容 - 传入 stockCode,内部懒加载各 Tab 数据 */}
|
||
<BasicInfoTab
|
||
stockCode={stockCode}
|
||
basicInfo={basicInfo}
|
||
/>
|
||
</VStack>
|
||
);
|
||
};
|
||
|
||
export default CompanyOverview;
|