当前位置: 首页 > 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.xdnf.cn/news/1359127.html

相关文章:

  • 上科大解锁城市建模新视角!AerialGo:从航拍视角到地面漫步的3D城市重建
  • nginx部署goaccess监控
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
  • leetcode 1493 删掉一个元素以后全为1的最长子数组
  • mybatis过渡到mybatis-plus过程中需要注意的地方
  • 《Distilling the Knowledge in a Neural Network》论文PDF分享, 2015 年,谷歌提出了 “知识蒸馏” 的概念
  • 06 - spring security角色和权限设置
  • vulnhub-billu_b0x靶机渗透
  • GPT-5国内免费体验
  • k8s下的网络通信之calico与调度
  • sqlite创建数据库,创建表,插入数据,查询数据的C++ demo
  • 最新sa-token的oauth2封装免密和密码登录
  • 【高等数学】第十章 重积分——第一节 二重积分的概念与性质
  • MinIO03-Linux安装
  • Docker安装RocketMQ
  • 征程 6X 常用工具介绍
  • AI大模型应用开发面试:深入解析技术点
  • 每日算法题【链表】:相交链表、环形链表、环形链表II
  • 鸿蒙中点击完成时延分析
  • LeetCode 42.接雨水
  • response对象的elapsed属性
  • Elasticsearch Ruby 客户端故障排查实战指南
  • Bright Data MCP:突破AI数据获取限制的革命性工具
  • 阿里云 OSS 前端直传实战:表单上传 + Policy 模式详解
  • GD32VW553-IOT 测评和vscode开发环境搭建
  • 硬件开发_基于物联网的宠物猫饲养系统
  • 互联网大厂Java面试模拟:核心技术点深度解析
  • 极验demo(float)(二)
  • 从字节码层面剖析以太坊智能合约创建原理
  • EXCEL实现复制后倒序粘贴