'use client' import {ReactNode, useCallback, useEffect, useMemo, useState} from 'react' import Link from 'next/link' import Wrap from '@/components/wrap' export type HeaderProps = {} export default function Header(props: HeaderProps) { // ====================== // 滚动条状态 // ====================== const [scroll, setScroll] = useState(false) // Changed to false for client-side rendering const handleScroll = useCallback(() => { setScroll(window.scrollY > 48) }, []) useEffect(() => { // Initialize scroll state on client setScroll(window.scrollY > 48) window.addEventListener('scroll', handleScroll) return () => { window.removeEventListener('scroll', handleScroll) } }, [handleScroll]) // ====================== // 菜单状态 // ====================== const [menu, setMenu] = useState(false) const [page, setPage] = useState(0) const pages = useMemo(() => [ , , , ], []) // ====================== // 覆盖状态 // ====================== const [overlay, setOverlay] = useState(false) useEffect(() => { setOverlay(scroll || menu) }, [menu, scroll]) // ====================== // 渲染组件 // ====================== const LinkItem = (props: { text: string href: string }) => (
  • {props.text}
  • ) const MenuItem = (props: { text: string page: number }) => (
  • ) return (
    {/* logo */} {`logo`} {/* 菜单 */}
    {/* 登录 */}
    {/* 下拉菜单 */}
    setMenu(true)} onPointerLeave={() => setMenu(false)} > {pages[page]}
    ) } function ProductMenu() { // ==================== // Tab 选项 // ==================== type TabType = 'domestic' | 'oversea' const [type, setType] = useState('domestic') const Tab = (props: { type: TabType, children: ReactNode }) => { return (
  • ) } // ==================== // 渲染组件 // ==================== return (
      国内代理 海外代理
    {type === 'domestic' ? (

    {`产品`} 代理产品

    短效动态IP 折扣45%

    全国300+城市级定位节点

    长效静态IP 折扣45%

    IPI资源覆盖全国

    固定IP 折扣45%

    定制 业务定制

    优质/企业/精选IP

    超 1000 家企业共同信赖之选!大客户经理全 程 1 对 1 沟通,随时为您排忧解难,提供 24 小时不间断支持

    ) : (
    ) }
    ) } function SolutionMenu() { const SolutionItem = (props: { icon: string title: string desc: string }) => { return (
    {props.title}

    {props.title}

    {props.desc}

    ) } return ( ) } function HelpMenu() { const Column = (props: { icon: string, title: string, items: { lead: string href: string }[] }) => (

    {props.title} {props.title}

      {props.items.map((item, index) => (
    • {item.lead}
    • ))}
    ) return ( {`banner`} ) }