优化页头样式与操控 & 优化首页推荐文章部分 & 修复后台未正确流式加载问题

This commit is contained in:
2025-12-18 17:10:20 +08:00
parent fe5a9d2d48
commit e2c9ea7fbf
6 changed files with 97 additions and 82 deletions

View File

@@ -1,5 +1,5 @@
'use client'
import {useMemo, useState, PointerEvent, ComponentProps, useSyncExternalStore, use, Suspense} from 'react'
import {useMemo, useState, PointerEvent, ComponentProps, useSyncExternalStore, use, Suspense, MouseEvent} from 'react'
import Link from 'next/link'
import Image from 'next/image'
import {HeaderContext} from './_components/header/common'
@@ -43,10 +43,20 @@ export default function Header(props: HeaderProps) {
<MobileMenu key="mobile"/>,
], [])
const toggleMobileMenu = () => {
if (menu) {
setMenu(false)
}
else {
setPage(3)
setMenu(true)
}
}
const enterMenu = (i: number) => {
return (e: PointerEvent) => {
setPage(i)
if (e.pointerType === 'mouse' || page !== i) {
if (page !== i) {
setMenu(true)
}
else {
@@ -55,18 +65,16 @@ export default function Header(props: HeaderProps) {
}
}
const exitMenu = (e: PointerEvent) => {
if (e.pointerType === 'mouse') {
setMenu(false)
}
const leaveMenu = (e: PointerEvent) => {
setMenu(false)
}
const enterMenuContent = (e: PointerEvent) => {
setMenu(true)
}
const exitMenuContent = (e: PointerEvent) => {
if (e.pointerType === 'mouse') {
const leaveMenuContent = (e: PointerEvent) => {
if (page != 3) {
setMenu(false)
}
}
@@ -115,19 +123,19 @@ export default function Header(props: HeaderProps) {
text="产品订购"
active={menu && page === 0}
onPointerEnter={enterMenu(0)}
onPointerLeave={exitMenu}
onPointerLeave={leaveMenu}
/>
<MenuItem
text="业务场景"
active={menu && page === 1}
onPointerEnter={enterMenu(1)}
onPointerLeave={exitMenu}
onPointerLeave={leaveMenu}
/>
<MenuItem
text="帮助中心"
active={menu && page === 2}
onPointerEnter={enterMenu(2)}
onPointerLeave={exitMenu}
onPointerLeave={leaveMenu}
/>
<LinkItem
text="业务定制"
@@ -138,8 +146,7 @@ export default function Header(props: HeaderProps) {
<Button
theme="ghost"
className="lg:hidden size-10"
onPointerEnter={enterMenu(3)}
onPointerLeave={exitMenu}
onClick={toggleMobileMenu}
>
<MenuIcon/>
</Button>
@@ -168,7 +175,7 @@ export default function Header(props: HeaderProps) {
: `delay-[0s,0s] opacity-0 py-0 pointer-events-none`,
)}
onPointerEnter={enterMenuContent}
onPointerLeave={exitMenuContent}
onPointerLeave={leaveMenuContent}
>
{pages[page]}
</div>