From c979e775a5ad5aa42a770f937173ad9bb7a98ea7 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Thu, 18 Dec 2025 18:43:05 +0800 Subject: [PATCH] =?UTF-8?q?perf(Company):=20=E6=81=A2=E5=A4=8D=20CompanyCo?= =?UTF-8?q?ntent=20=E7=9A=84=20memo=20=E5=8C=85=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将主内容区提取为独立的 memo 包装组件 - 避免父组件状态变化导致不必要的重渲染 - 提升页面性能 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/views/Company/index.tsx | 76 ++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/src/views/Company/index.tsx b/src/views/Company/index.tsx index a0565b09..4697942c 100644 --- a/src/views/Company/index.tsx +++ b/src/views/Company/index.tsx @@ -24,6 +24,52 @@ import CompanyHeader from './components/CompanyHeader'; import StockQuoteCard from './components/StockQuoteCard'; import { THEME, TAB_CONFIG } from './config'; +// ============================================ +// 主内容区组件 - FUI 风格 +// ============================================ + +interface CompanyContentProps { + stockCode: string; + isInWatchlist: boolean; + watchlistLoading: boolean; + onWatchlistToggle: () => void; + onTabChange: (index: number, tabKey: string) => void; +} + +const CompanyContent = memo(({ + stockCode, + isInWatchlist, + watchlistLoading, + onWatchlistToggle, + onTabChange, +}) => ( + + {/* 股票行情卡片 - 放在 Tab 切换器上方,始终可见 */} + + + + + {/* Tab 内容区 - 使用 FuiContainer */} + + + + +)); + +CompanyContent.displayName = 'CompanyContent'; + // ============================================ // 主页面组件 // ============================================ @@ -116,29 +162,13 @@ const CompanyIndex: React.FC = () => { {/* 主内容区 */} - - {/* 股票行情卡片 - 放在 Tab 切换器上方,始终可见 */} - - - - - {/* Tab 内容区 - 使用 FuiContainer */} - - - - + );