'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import Header from '@/app/components/Header'; import Footer from '@/app/components/Footer'; import HeroBanner from '@/app/components/home/HeroBanner'; import ProcessSection from '@/app/components/home/ProcessSection'; import AdvantagesSection from '@/app/components/home/AdvantagesSection'; import ProductsSection from '@/app/components/home/ProductsSection'; import NewsSection from '@/app/components/home/NewsSection'; import ContactSection from '@/app/components/home/ContactSection'; import { homeTranslations, type HomeTranslations } from '@/lib/home-translations'; interface HomePageClientProps { locale: string; } // 预加载组件 - 提前加载关键页面资源 function PrefetchLinks({ locale }: { locale: string }) { const baseLocale = locale === 'zh' ? '' : `/${locale}`; return ( <> {/* 预加载关键页面 */} > ); } export default function HomePageClient({ locale }: HomePageClientProps) { const [language, setLanguage] = useState<'zh-CN' | 'zh-TW' | 'en'>('zh-CN'); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); // Only set language after mounting to prevent hydration mismatch const initialLanguage = locale === 'zh' ? 'zh-CN' : locale === 'zh-TW' ? 'zh-TW' : 'en'; setLanguage(initialLanguage); }, [locale]); // 添加性能监控 useEffect(() => { if (mounted) { // 预加载关键资源 const preloadCriticalResources = () => { // 预加载重要图片 const criticalImages = [ '/images/hero-bg.jpg', '/images/cloud-services.jpg', '/images/aws-logo.png' ]; criticalImages.forEach(src => { const link = document.createElement('link'); link.rel = 'preload'; link.as = 'image'; link.href = src; document.head.appendChild(link); }); }; // 延迟执行以不阻塞初始渲染 setTimeout(preloadCriticalResources, 100); } }, [mounted]); const t: HomeTranslations = homeTranslations[language] || homeTranslations['zh-CN']; const handleLanguageChange = (lang: string) => { if (lang === 'zh-CN' || lang === 'zh-TW' || lang === 'en') { setLanguage(lang); } }; // Show a simple loading placeholder until mounted to prevent hydration issues if (!mounted) { return (