Files
vf_react/src/views/Company/components/DeepAnalysis
zdl ce4da40ef6 refactor(DeepAnalysis): TypeScript 重构,提取 useDeepAnalysisData Hook
- 新增 types.ts:API 类型定义、状态接口、Tab 映射常量
- 新增 hooks/useDeepAnalysisData.ts:提取数据获取逻辑
  - 懒加载:按 Tab 按需请求
  - 数据缓存:已加载数据不重复请求
  - 竞态处理:stockCode 变更时防止旧请求覆盖
- 重写 index.tsx:memo 优化,代码行数 229 → 81
- 新增 README.md:组件文档

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-19 13:42:16 +08:00
..

DeepAnalysis 组件

深度分析模块,展示公司战略分析、业务分析、产业链分析和发展历程。

目录结构

DeepAnalysis/
├── index.tsx                 # 主组件入口memo 优化)
├── types.ts                  # 类型定义
├── README.md                 # 本文档
│
└── hooks/
    ├── index.ts              # Hooks 导出
    └── useDeepAnalysisData.ts # 数据获取 Hook懒加载、缓存

功能特性

特性 说明
Tab 懒加载 切换 Tab 时按需加载数据
数据缓存 已加载的数据不重复请求
竞态处理 stockCode 变更时防止旧请求覆盖新数据
memo 优化 避免不必要的重渲染

API 接口映射

Tab API Key 接口
战略分析 comprehensive /api/company/comprehensive-analysis
业务分析 comprehensive 同上(共用)
产业链 valueChain /api/company/value-chain-analysis
发展历程 keyFactors /api/company/key-factors-timeline

数据流

DeepAnalysis
├── useDeepAnalysisData (Hook)
│   ├── data: { comprehensive, valueChain, keyFactors, industryRank }
│   ├── loading: { comprehensive, valueChain, keyFactors, industryRank }
│   └── loadTabData(tabKey) → loadApiData(apiKey)
│
└── DeepAnalysisTab (展示组件)
    ├── StrategyTab
    ├── BusinessTab
    ├── ValueChainTab
    └── DevelopmentTab

使用示例

import DeepAnalysis from '@views/Company/components/DeepAnalysis';

<DeepAnalysis stockCode="600000" />

Hook 使用

import { useDeepAnalysisData } from '@views/Company/components/DeepAnalysis/hooks';

const { data, loading, loadTabData, resetData } = useDeepAnalysisData(stockCode);

// 手动加载某个 Tab
loadTabData('valueChain');

// 重置所有数据
resetData();

性能优化

  • React.memo 包装主组件
  • useCallback 稳定化事件处理函数
  • useRef 追踪已加载状态(避免重复请求)
  • 竞态条件检测stockCode 变更时忽略旧请求)