当前位置: 首页 > news >正文

yggjs_rlayout框架v0.1.2使用教程 02 TechLayout 布局组件

简介

TechLayout 是整个科技风组件库的核心布局组件,它提供了一个完整的应用程序布局解决方案,包括:

  • 顶部导航栏
  • 可折叠侧边栏
  • 主要内容区域
  • 响应式设计

基础使用

最简单的使用

import { TechLayout } from 'yggjs_rlayout/tech';function App() {const menuItems = [{ key: 'home', label: '首页', icon: 'home' },{ key: 'users', label: '用户', icon: 'users' },];return (<TechLayoutbrand="我的应用"sidebarItems={menuItems}><div>页面内容</div></TechLayout>);
}

完整示例

带所有功能的布局

import { TechLayout } from 'yggjs_rlayout/tech';
import { useState } from 'react';function App() {const [selectedKey, setSelectedKey] = useState('dashboard');// 侧边栏菜单数据const sidebarItems = [{ key: 'dashboard', label: '仪表板', icon: 'dashboard' },{ key: 'users', label: '用户管理', icon: 'users',children: [{ key: 'user-list', label: '用户列表' },{ key: 'user-roles', label: '角色管理' },]},{ key: 'settings', label: '设置', icon: 'settings' },];// 顶部导航菜单(可选)const headerMenuItems = [{ key: 'workspace1', label: '工作区 1' },{ key: 'workspace2', label: '工作区 2' },];return (<TechLayout// 品牌信息brand="管理后台"version="v1.0.0"// 顶部导航headerMenuItems={headerMenuItems}selectedHeaderKey="workspace1"onHeaderMenuSelect={(key) => console.log('切换工作区:', key)}// 侧边栏sidebarItems={sidebarItems}selectedSidebarKey={selectedKey}onSidebarSelect={setSelectedKey}// 搜索功能onSearch={(value) => console.log('搜索:', value)}searchPlaceholder="搜索功能..."// 顶部右侧操作区headerActions={<div><button>通知</button><button>用户中心</button></div>}// 布局配置defaultCollapsed={false}sidebarWidth={260}collapsedWidth={72}>{/* 这里是你的页面内容 */}<div><h1>当前页面: {selectedKey}</h1><p>页面内容会在这里显示</p></div></TechLayout>);
}

属性详解

基础属性

属性类型默认值说明
childrenReactNode-主要内容区域
brandReactNode-品牌信息,显示在左上角
versionstring-版本号,显示在品牌旁边

顶部导航属性

属性类型默认值说明
headerMenuItemsTechMenuItem[]-顶部导航菜单项
selectedHeaderKeystring-当前选中的顶部菜单
onHeaderMenuSelect(key: string) => void-顶部菜单选择回调
headerActionsReactNode-顶部右侧操作区内容
headerExtraReactNode-顶部额外内容

侧边栏属性

属性类型默认值说明
sidebarItemsTechMenuItem[]必填侧边栏菜单项
selectedSidebarKeystring-当前选中的侧边栏菜单
onSidebarSelect(key: string) => void-侧边栏菜单选择回调

搜索功能

属性类型默认值说明
onSearch(value: string) => void-搜索回调函数
searchPlaceholderstring“搜索…”搜索框占位符

布局配置

属性类型默认值说明
defaultCollapsedbooleanfalse侧边栏默认是否折叠
sidebarWidthnumber240侧边栏展开时的宽度
collapsedWidthnumber72侧边栏折叠时的宽度
headerHeightnumber56顶部导航栏高度

内容区域配置

属性类型默认值说明
contentMaxWidthnumber1280内容区域最大宽度
contentPaddingnumber16内容区域内边距
enableGlobalStylesbooleantrue是否启用全局样式
enableScrollbarStylingbooleantrue是否启用滚动条样式

菜单项数据格式

基础菜单项

const menuItems = [{key: 'dashboard',        // 唯一标识label: '仪表板',          // 显示文本icon: 'dashboard',       // 图标名称(可选)},
];

带子菜单的菜单项

const menuItems = [{key: 'users',label: '用户管理',icon: 'users',children: [              // 子菜单{ key: 'user-list', label: '用户列表' },{ key: 'user-roles', label: '角色管理' },],},
];

响应式设计

TechLayout 会自动适配不同屏幕尺寸:

  • 桌面端:正常显示所有元素
  • 平板端:侧边栏自动折叠
  • 手机端:侧边栏变为抽屉式

路由集成

如果你使用 React Router,可以这样集成:

import { TechLayout } from 'yggjs_rlayout/tech';
import { useNavigate, useLocation } from 'react-router-dom';function AppLayout({ children }) {const navigate = useNavigate();const location = useLocation();const menuItems = [{ key: '/dashboard', label: '仪表板', icon: 'dashboard' },{ key: '/users', label: '用户', icon: 'users' },];return (<TechLayoutbrand="我的应用"sidebarItems={menuItems}selectedSidebarKey={location.pathname}onSidebarSelect={(key) => navigate(key)}>{children}</TechLayout>);
}

常见问题

1. 如何隐藏顶部导航?

不传入 headerMenuItems 即可隐藏顶部菜单栏。

2. 如何自定义侧边栏宽度?

使用 sidebarWidthcollapsedWidth 属性:

<TechLayoutsidebarWidth={300}       // 展开宽度collapsedWidth={60}      // 折叠宽度// ...其他属性
>

3. 如何处理菜单点击事件?

使用 onSidebarSelect 回调:

<TechLayoutonSidebarSelect={(key) => {console.log('选中菜单:', key);// 这里可以处理路由跳转、状态更新等逻辑}}// ...其他属性
>

4. 如何设置默认折叠侧边栏?

<TechLayoutdefaultCollapsed={true}// ...其他属性
>
http://www.dtcms.com/a/348572.html

相关文章:

  • 拿AI下围棋 -- 开源项目leela-zero
  • ​Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)​
  • mysql历史社区版本下载
  • 面试题及解答:掌握Linux下常用性能分析工具
  • (Redis)过期删除策略
  • 半年网络安全转型学习计划表(每天3小时)
  • Highcharts推出OEM许可证中国区正式上线:赋能企业级嵌入式数据可视化解决方案
  • 如何使用 DeepSeek 助力工作​。​
  • 数据可视化——matplotlib库
  • EPWpy教程:一个脚本完成能带、声子、电声耦合、弛豫时间计算
  • [自用笔记]上传本地项目至github
  • 联想win11笔记本音频失效,显示差号(x)
  • 【嵌入式DIY实例-ESP32篇】-物联网电能表
  • 硬件开发_基于物联网的宠物猫饲养系统
  • 中介者模式与几个C++应用实例
  • 【高等数学】第十章 重积分——第二节 二重积分的计算法
  • 交通拥堵识别准确率↑22.5%!陌讯多模态时序融合算法在智慧交通的落地优化
  • Spring AOP面向切面的底层原理、注解、切入点表达式、连接点获取方法名参数值等
  • C++STL底层原理:探秘标准模板库的内部机制
  • 从全栈开发到微服务架构:一次真实的Java面试实录
  • 【机器学习】9 Generalized linear models and the exponential family
  • 大模型面试题剖析:微调与 RAG 技术的选用逻辑
  • 【Docker项目实战】使用Docker部署Hibiscus.txt简单日记工具
  • VITE BALABALA require balabla not supported
  • Linux:shell命令
  • 【数据结构】-4-顺序表(上)
  • AI Agent与生成式AI双驱动:AI如何重塑商业格局并创造千亿级增量价值
  • 一套完整的Linux下usb设备驱动包括字符设备驱动吗
  • Docker 安装LDAP(企业级统一账号配置系统)
  • 税务岗位能力提升培训课程推荐:专业成长与证书指南