From 34bae3585885dfb6a6a0e51245c645e84fa0db55 Mon Sep 17 00:00:00 2001
From: zdl <3489966805@qq.com>
Date: Fri, 21 Nov 2025 17:59:03 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=9A=84=E9=97=AE?=
=?UTF-8?q?=E9=A2=98=EF=BC=9AH5=20=E6=B1=89=E5=A0=A1=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4=EF=BC=88=E7=A7=BB=E5=88=B0?=
=?UTF-8?q?=E5=A4=B4=E5=83=8F=E5=8F=B3=E4=BE=A7=EF=BC=89=20=E5=B9=B3?=
=?UTF-8?q?=E6=9D=BF=E7=AB=AF=E6=98=BE=E7=A4=BA=20MoreMenu=20=E8=80=8C?=
=?UTF-8?q?=E9=9D=9E=E6=B1=89=E5=A0=A1=E8=8F=9C=E5=8D=95=20=E6=9C=AA?=
=?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=B1=89?=
=?UTF-8?q?=E5=A0=A1=E8=8F=9C=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Navbars/HomeNavbar.js | 5 ++-
.../Navbars/components/NavbarActions/index.js | 41 ++++++++-----------
2 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/src/components/Navbars/HomeNavbar.js b/src/components/Navbars/HomeNavbar.js
index 05f07933..5fda71d9 100644
--- a/src/components/Navbars/HomeNavbar.js
+++ b/src/components/Navbars/HomeNavbar.js
@@ -44,7 +44,7 @@ import { useSubscription } from '../../hooks/useSubscription';
import { DesktopUserMenu, TabletUserMenu } from './components/UserMenu';
// Phase 4 优化: 提取的导航菜单组件
-import { DesktopNav, PersonalCenterMenu } from './components/Navigation';
+import { DesktopNav, MoreMenu, PersonalCenterMenu } from './components/Navigation';
// Phase 5 优化: 提取的移动端抽屉菜单组件
import { MobileDrawer } from './components/MobileDrawer';
@@ -67,6 +67,7 @@ export default function HomeNavbar() {
const { isOpen, onOpen, onClose } = useDisclosure();
const navigate = useNavigate();
const isMobile = useBreakpointValue({ base: true, md: false });
+ const isTablet = useBreakpointValue({ base: false, md: true, lg: false });
const isDesktop = useBreakpointValue({ base: false, md: false, lg: true });
const { user, isAuthenticated, logout, isLoading } = useAuth();
const { openAuthModal } = useAuthModal();
@@ -177,6 +178,8 @@ export default function HomeNavbar() {
isAuthenticated={isAuthenticated}
user={user}
isDesktop={isDesktop}
+ isTablet={isTablet}
+ isMobile={isMobile}
onMenuOpen={onOpen}
handleLogout={handleLogout}
watchlistQuotes={watchlistQuotes}
diff --git a/src/components/Navbars/components/NavbarActions/index.js b/src/components/Navbars/components/NavbarActions/index.js
index 7ca5b3c0..1680ea64 100644
--- a/src/components/Navbars/components/NavbarActions/index.js
+++ b/src/components/Navbars/components/NavbarActions/index.js
@@ -2,14 +2,14 @@
// Navbar 右侧功能区组件
import React, { memo } from 'react';
-import { HStack, Spinner, IconButton } from '@chakra-ui/react';
+import { HStack, Spinner, IconButton, Box } from '@chakra-ui/react';
import { HamburgerIcon } from '@chakra-ui/icons';
import ThemeToggleButton from '../ThemeToggleButton';
import LoginButton from '../LoginButton';
import CalendarButton from '../CalendarButton';
import { WatchlistMenu, FollowingEventsMenu } from '../FeatureMenus';
import { DesktopUserMenu, TabletUserMenu } from '../UserMenu';
-import { PersonalCenterMenu } from '../Navigation';
+import { PersonalCenterMenu, MoreMenu } from '../Navigation';
/**
* Navbar 右侧功能区组件
@@ -20,8 +20,9 @@ import { PersonalCenterMenu } from '../Navigation';
* @param {boolean} props.isAuthenticated - 是否已登录
* @param {Object} props.user - 用户对象
* @param {boolean} props.isDesktop - 是否为桌面端
+ * @param {boolean} props.isTablet - 是否为平板端
* @param {boolean} props.isMobile - 是否为移动端
- * @param {Function} props.onMenuOpen - 打开移动端菜单的回调
+ * @param {Function} props.onMenuOpen - 打开移动端抽屉菜单的回调
* @param {Function} props.handleLogout - 登出回调
* @param {Array} props.watchlistQuotes - 自选股数据(用于 TabletUserMenu)
* @param {Array} props.followingEvents - 关注事件数据(用于 TabletUserMenu)
@@ -31,6 +32,7 @@ const NavbarActions = memo(({
isAuthenticated,
user,
isDesktop,
+ isTablet,
isMobile,
onMenuOpen,
handleLogout,
@@ -69,8 +71,15 @@ const NavbarActions = memo(({
/>
)}
- {/* 移动端汉堡菜单 - 在头像右侧 */}
- {isMobile && (
+ {/* 头像右侧的菜单 - 响应式(互斥逻辑,确保只渲染一个) */}
+ {isDesktop ? (
+ // 桌面端:个人中心下拉菜单
+
+ ) : isTablet ? (
+ // 平板端:MoreMenu 下拉菜单
+
+ ) : (
+ // 移动端:汉堡菜单(打开抽屉)
}
variant="ghost"
@@ -79,28 +88,10 @@ const NavbarActions = memo(({
size="md"
/>
)}
-
- {/* 个人中心下拉菜单 - 仅大屏显示 */}
- {isDesktop && (
-
- )}
) : (
- // 未登录状态 - 登录按钮 + 汉堡菜单
-
-
-
- {/* 移动端汉堡菜单 - 未登录时也显示 */}
- {isMobile && (
- }
- variant="ghost"
- onClick={onMenuOpen}
- aria-label="打开菜单"
- size="md"
- />
- )}
-
+ // 未登录状态 - 仅显示登录按钮
+
)}
);