$ cnpm install @uyun/ec-side-menu
基于 Layout.Sider 和 Menu 二次开发的侧边栏导航菜单。
作者:沈挺
侧边菜单作为网站中的重要组成部分,提供了多级结构来收纳和排列网站架构,用户以此在各个页面中进行跳转或其它功能性操作。
通过配置 items 属性描述菜单的结构。
import { Link } from 'react-router-dom'
const items = [
{
key: 'nav',
type: 'link',
icon: 'nav',
name: '导航',
path: 'nav'
}
]
<SideMenu
items={items}
Link={Link}
/>
容器。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| style | 容器 style | object | - |
| className | 容器 className | string | - |
| menuStyle | 导航区域 style | object | - |
| menuClassName | 导航区域 className | string | - |
| belowMenuStyle | 底部功能区域 style | object | - |
| belowMenuClassName | 底部功能区域 className | string | - |
| items | 子菜单的配置描述,具体项见下表 | ItemProps[] | - |
| Link | react-router 的 Link 组件 |
ReactNode | - |
| theme | 主题颜色 | string: white blue dark |
white |
| collapsed | 容器当前收起状态 | boolean | - |
| mode | 侧边菜单的模式,设置为 auto 时,会根据路由中的 hash 来决定 selectedKeys,并响应路由变化 |
string: default auto |
default |
| isSelectedKey | 当 mode 为 auto 时的默认行为无法满足需求时,用 isSelectedKey 函数来决定选中哪个子菜单 |
function(item): boolean | - |
| openCurrentOnly | 是否只展开当前父级菜单 | boolean | true |
| defaultOpenKeys | 内嵌菜单初始展开的菜单项 key 数组,mode 为 auto 时无效 |
string[] | - |
| defaultSelectedKeys | 初始选中的子菜单项 key 数组,mode 为 auto 时无效 |
string[] | - |
| openKeys | 内嵌菜单当前展开的菜单项 key 数组,mode 为 auto 时无效 |
string[] | - |
| selectedKeys | 当前选中的子菜单项 key 数组,mode 为 auto 时无效 |
string[] | - |
| onCollapse | 容器展开/收起时的回调,有点击 trigger 以及响应式反馈两种触发方式 | function(collapsed, type) | - |
| onOpenChange | 内嵌菜单展开/关闭时的回调 | function(openKeys: string[]) | - |
| onSelect | 子菜单被选中时的回调 | function({ item, key, selectedKeys }) | - |
| onClick | 子菜单被点击时的回调 | function({ item, key, keyPath }) | - |
子菜单属性描述,预设 5 种类型的子菜单,分别适用于不同场景和需求。
当 key 为无效值或 type 为非法值时,子菜单将不会被渲染。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| key | 唯一标志 | string | - |
| type | 类型,具体项见下表 | string: default link component sub group |
- |
| below | 是否位于底部功能区域 | boolean | false |
default默认菜单。提供默认样式,适用于进行编程式导航或其它功能性操作。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| name | 名称 | string / ReactNode | - |
| icon | 图标,可传 uyd 的 type 、iconfont iconfont-xxx 或自定义图标组件 |
string / ReactNode | - |
| footer | 页脚,可对子菜单添加额外内容 | ReactNode | - |
link导航菜单。与默认菜单类似,通过 Link 或 a 组件渲染菜单,适用于进行路由跳转等操作。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| name | 名称 | string / ReactNode | - |
| icon | 图标,可传 uyd 的 type 、iconfont iconfont-xxx 或自定义图标组件 |
string / ReactNode | - |
| path | 路径,值为绝对路径时将渲染为 a |
string | - |
| target | Link 或 a 的 target 属性 |
string | - |
| footer | 页脚,可对子菜单添加额外内容 | ReactNode | - |
component组件菜单。完全自定义的子菜单,适用于与业务有关的特殊组件。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| component | 自定义组件 | ReactNode | - |
sub内嵌菜单。具有展开/关闭的效果,适用于同类子菜单的分组。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| name | 名称 | string / ReactNode | - |
| icon | 图标,可传 uyd 的 type 、iconfont iconfont-xxx 或自定义图标组件 |
string / ReactNode | - |
| path | 路径,与 children 中导航菜单的 path 进行拼接 |
string | - |
| children | 子菜单的配置描述 | ItemProps[] | - |
group分组菜单。也适用于分组的场景,但不具有图标和展开/关闭的效果,且容器收起时,标题将会隐藏。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| name | 名称 | string / ReactNode | - |
| path | 路径,与 children 中导航菜单的 path 进行拼接 |
string | - |
| children | 子菜单的配置描述 | ItemProps[] | - |
Copyright 2013 - present © cnpmjs.org