// src/views/Home/HomePage.tsx // 首页 - 专业投资分析平台 import React, { useEffect, useCallback, useRef } from 'react'; import { Box, Container, VStack, SimpleGrid } from '@chakra-ui/react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '@/contexts/AuthContext'; import { usePostHogTrack } from '@/hooks/usePostHogRedux'; import { useHomeResponsive } from '@/hooks/useHomeResponsive'; import { ACQUISITION_EVENTS } from '@/lib/constants'; import { CORE_FEATURES } from '@/constants/homeFeatures'; import { performanceMonitor } from '@/utils/performanceMonitor'; import type { Feature } from '@/types/home'; import { HeroHeader } from './components/HeroHeader'; import { FeaturedFeatureCard } from './components/FeaturedFeatureCard'; import { FeatureCard } from './components/FeatureCard'; import MiniProgramLauncher from '@/components/MiniProgramLauncher'; import { isMobileDevice } from '@/components/MiniProgramLauncher/hooks/useWechatEnvironment'; import '@/styles/home-animations.css'; /** * 首页组件 * 展示平台核心功能,引导用户探索各个功能模块 */ const HomePage: React.FC = () => { const { user, isAuthenticated } = useAuth(); const navigate = useNavigate(); const { track } = usePostHogTrack(); // ⚡ 性能标记:渲染开始(组件函数执行时,使用 ref 避免严格模式下重复标记) const hasMarkedStart = useRef(false); if (!hasMarkedStart.current) { performanceMonitor.mark('homepage-render-start'); hasMarkedStart.current = true; } // 响应式配置 const { headingSize, headingLetterSpacing, heroTextSize, containerPx, } = useHomeResponsive(); // ⚡ 性能标记:渲染完成(DOM 已挂载) useEffect(() => { performanceMonitor.mark('homepage-render-end'); }, []); // PostHog 追踪:页面浏览 useEffect(() => { track(ACQUISITION_EVENTS.LANDING_PAGE_VIEWED, { timestamp: new Date().toISOString(), is_authenticated: isAuthenticated, user_id: user?.id || null, }); }, [track, isAuthenticated, user?.id]); // 功能卡片点击处理 const handleFeatureClick = useCallback((feature: Feature) => { // PostHog 追踪:功能卡片点击 track(ACQUISITION_EVENTS.FEATURE_CARD_VIEWED, { feature_id: feature.id, feature_title: feature.title, feature_url: feature.url, is_featured: feature.featured || false, link_type: feature.url.startsWith('http') ? 'external' : 'internal', }); // 导航处理 if (feature.url.startsWith('http')) { window.open(feature.url, '_blank'); } else { navigate(feature.url); } }, [track, navigate]); // 特色功能(第一个) const featuredFeature = CORE_FEATURES[0]; // 其他功能 const regularFeatures = CORE_FEATURES.slice(1); // 移动端判断(用于显示小程序入口) const isMobile = isMobileDevice(); return ( {/* Hero Section - 深色科技风格,自适应容器高度 */} {/* 主标题区域 */} {/* 核心功能面板 */} {/* 特色功能卡片 - 新闻中心 */} {/* 其他功能卡片 */} {regularFeatures.map((feature) => ( ))} {/* 移动端右上角固定按钮 - 小程序入口 */} {isMobile && ( 小程序 )} ); }; export default HomePage;