perf(DeepAnalysis): 优化初始加载,只请求 comprehensive 接口
- 移除初始加载时的 industryRank 请求 - 只加载默认 Tab(战略分析)需要的核心数据 - 其他数据按需懒加载 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,8 @@ import './theme/fui-animations.css';
|
||||
import { useSearchParams } from 'react-router-dom';
|
||||
import { Box } from '@chakra-ui/react';
|
||||
import SubTabContainer from '@components/SubTabContainer';
|
||||
import { FuiContainer, AmbientGlow } from '@components/FUI';
|
||||
import { useStockDocumentTitle } from '@hooks/useDocumentTitle';
|
||||
import { useCompanyEvents } from './hooks/useCompanyEvents';
|
||||
import { useCompanyData } from './hooks/useCompanyData';
|
||||
import CompanyHeader from './components/CompanyHeader';
|
||||
@@ -52,63 +54,8 @@ const CompanyContent = memo<CompanyContentProps>(({
|
||||
/>
|
||||
</Box>
|
||||
|
||||
{/* Tab 内容区 */}
|
||||
<Box
|
||||
position="relative"
|
||||
bg={`linear-gradient(145deg, rgba(26, 26, 46, 0.95) 0%, rgba(15, 15, 26, 0.98) 100%)`}
|
||||
borderRadius="xl"
|
||||
border="1px solid"
|
||||
borderColor="rgba(212, 175, 55, 0.15)"
|
||||
overflow="hidden"
|
||||
backdropFilter="blur(16px)"
|
||||
boxShadow="0 8px 32px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05)"
|
||||
>
|
||||
{/* 角落装饰 - FUI 风格 */}
|
||||
<Box
|
||||
position="absolute"
|
||||
top="12px"
|
||||
left="12px"
|
||||
w="16px"
|
||||
h="16px"
|
||||
borderTop="2px solid"
|
||||
borderLeft="2px solid"
|
||||
borderColor="rgba(212, 175, 55, 0.4)"
|
||||
opacity={0.6}
|
||||
/>
|
||||
<Box
|
||||
position="absolute"
|
||||
top="12px"
|
||||
right="12px"
|
||||
w="16px"
|
||||
h="16px"
|
||||
borderTop="2px solid"
|
||||
borderRight="2px solid"
|
||||
borderColor="rgba(212, 175, 55, 0.4)"
|
||||
opacity={0.6}
|
||||
/>
|
||||
<Box
|
||||
position="absolute"
|
||||
bottom="12px"
|
||||
left="12px"
|
||||
w="16px"
|
||||
h="16px"
|
||||
borderBottom="2px solid"
|
||||
borderLeft="2px solid"
|
||||
borderColor="rgba(212, 175, 55, 0.4)"
|
||||
opacity={0.6}
|
||||
/>
|
||||
<Box
|
||||
position="absolute"
|
||||
bottom="12px"
|
||||
right="12px"
|
||||
w="16px"
|
||||
h="16px"
|
||||
borderBottom="2px solid"
|
||||
borderRight="2px solid"
|
||||
borderColor="rgba(212, 175, 55, 0.4)"
|
||||
opacity={0.6}
|
||||
/>
|
||||
|
||||
{/* Tab 内容区 - 使用 FuiContainer */}
|
||||
<FuiContainer variant="default">
|
||||
<SubTabContainer
|
||||
tabs={TAB_CONFIG}
|
||||
componentProps={{ stockCode }}
|
||||
@@ -117,34 +64,12 @@ const CompanyContent = memo<CompanyContentProps>(({
|
||||
contentPadding={0}
|
||||
isLazy={true}
|
||||
/>
|
||||
</Box>
|
||||
</FuiContainer>
|
||||
</Box>
|
||||
));
|
||||
|
||||
CompanyContent.displayName = 'CompanyContent';
|
||||
|
||||
// ============================================
|
||||
// 网页标题 Hook
|
||||
// ============================================
|
||||
|
||||
const useDocumentTitle = (stockCode: string, stockName?: string) => {
|
||||
useEffect(() => {
|
||||
const baseTitle = '价值前沿';
|
||||
if (stockName) {
|
||||
document.title = `${stockName}(${stockCode}) - ${baseTitle}`;
|
||||
} else if (stockCode) {
|
||||
document.title = `${stockCode} - ${baseTitle}`;
|
||||
} else {
|
||||
document.title = baseTitle;
|
||||
}
|
||||
|
||||
// 组件卸载时恢复默认标题
|
||||
return () => {
|
||||
document.title = baseTitle;
|
||||
};
|
||||
}, [stockCode, stockName]);
|
||||
};
|
||||
|
||||
// ============================================
|
||||
// 主页面组件
|
||||
// ============================================
|
||||
@@ -175,7 +100,7 @@ const CompanyIndex: React.FC = () => {
|
||||
const { trackStockSearched, trackTabChanged, trackWatchlistAdded, trackWatchlistRemoved } = companyEvents;
|
||||
|
||||
// 设置网页标题
|
||||
useDocumentTitle(stockCode, stockInfo?.stock_name);
|
||||
useStockDocumentTitle(stockCode, stockInfo?.stock_name);
|
||||
|
||||
// 股票代码变化追踪
|
||||
useEffect(() => {
|
||||
@@ -220,20 +145,7 @@ const CompanyIndex: React.FC = () => {
|
||||
overflow="hidden"
|
||||
>
|
||||
{/* 全局环境光效果 - James Turrell 风格 */}
|
||||
<Box
|
||||
position="fixed"
|
||||
top={0}
|
||||
left={0}
|
||||
right={0}
|
||||
bottom={0}
|
||||
pointerEvents="none"
|
||||
zIndex={0}
|
||||
bg={`
|
||||
radial-gradient(ellipse 100% 80% at 50% -20%, rgba(212, 175, 55, 0.08), transparent 50%),
|
||||
radial-gradient(ellipse 60% 50% at 0% 50%, rgba(100, 200, 255, 0.04), transparent 40%),
|
||||
radial-gradient(ellipse 60% 50% at 100% 50%, rgba(255, 200, 100, 0.04), transparent 40%)
|
||||
`}
|
||||
/>
|
||||
<AmbientGlow variant="default" />
|
||||
|
||||
{/* 顶部搜索栏 */}
|
||||
<Box position="relative" zIndex={1}>
|
||||
|
||||
Reference in New Issue
Block a user