菜单

侧边栏和导航

相关源文件

本文档介绍了 Hydra 基于 React 的前端中的侧边栏组件和导航系统。侧边栏作为主要的导航界面,显示导航路由、用户库、收藏夹,并提供过滤功能。有关设置面板和配置管理的信息,请参阅 设置系统

组件架构

侧边栏在 src/renderer/src/components/sidebar/sidebar.tsx中实现为单个 React 组件,该组件负责管理多个独立的部分和功能。

来源src/renderer/src/components/sidebar/sidebar.tsx37-312

侧边栏使用 React Router 实现基于路由的导航系统。导航路由在单独的路由配置文件中定义并动态渲染。

导航菜单渲染带有活动状态指示器的每个路由

功能实现位置
路由配置routes.map() 迭代sidebar.tsx215-231
活动状态检测location.pathname === pathsidebar.tsx219
导航处理程序handleSidebarItemClick()sidebar.tsx160-164
路由渲染动态 render() 函数sidebar.tsx227

来源src/renderer/src/components/sidebar/sidebar.tsx215-231 src/renderer/src/components/sidebar/sidebar.tsx160-164

库管理和过滤

侧边栏提供全面的游戏库管理,具有过滤功能和状态显示。

过滤实现

侧边栏实现多种过滤机制

过滤器类型功能标准
文本过滤器handleFilter游戏标题包含输入文本
可玩过滤器isGamePlayable游戏具有 executablePath
收藏夹过滤器内置game.favorite === true

文本过滤不区分大小写,并使用 toLocaleLowerCase() 进行比较 sidebar.tsx99-107

游戏状态显示

getGameTitle 函数提供动态状态显示

来源src/renderer/src/components/sidebar/sidebar.tsx144-158 src/renderer/src/components/sidebar/sidebar.tsx99-107 src/renderer/src/components/sidebar/sidebar.tsx35

调整大小和布局

侧边栏实现了一个可调整大小的界面,可通过鼠标进行宽度调整,并支持持久化存储。

调整大小实现细节

常量目的
SIDEBAR_MIN_WIDTH200px侧边栏最小宽度
SIDEBAR_MAX_WIDTH450px侧边栏最大宽度
SIDEBAR_INITIAL_WIDTH250px首次加载时的默认宽度

调整大小逻辑包括边界检查和持久化存储 sidebar.tsx29-31 sidebar.tsx118-142

来源src/renderer/src/components/sidebar/sidebar.tsx29-31 src/renderer/src/components/sidebar/sidebar.tsx90-97 src/renderer/src/components/sidebar/sidebar.tsx118-142

集成点

侧边栏与多个系统组件和外部服务集成。

主要集成功能

集成目的实现
好友请求实时通知计数window.electron.onSyncFriendRequests
游戏启动双击执行游戏window.electron.openGame
下载进度实时状态更新useDownload hook
订阅功能高级 UI 元素hasActiveSubscription 检查

侧边栏响应好友请求同步事件,并相应地更新 Redux 状态 sidebar.tsx75-83

来源src/renderer/src/components/sidebar/sidebar.tsx8-13 src/renderer/src/components/sidebar/sidebar.tsx75-83 src/renderer/src/components/sidebar/sidebar.tsx166-190 src/renderer/src/components/sidebar/sidebar.tsx292-303