Tui

Menu 菜单
支持垂直菜单导航,配置简单,支持嵌套子菜单与图标展示。可通过 v-model 双向绑定当前路径。
支持 direction="horizontal" 横向模式,可用于顶部导航栏,并支持 children 下拉。
尝试使用 v-model 来做受控与非受控的切换, 当 v-model 没有绑定或者为空时,valuechange 事件将作为非受控的方式来切换
基础用法
合并演示受控(v-model)与非受控(value + change)两种用法。
示例代码
vue
行高与间距
通过 itemHeightitemColumnGap 控制菜单项高度与上下间距。
示例代码
vue
横向菜单
通过 direction="horizontal" 启用横向模式,支持一级菜单和 children 下拉子菜单。
示例代码
vue
嵌套子菜单
支持多级嵌套结构,点击展开子项。
示例代码
vue
菜单组(共享选中状态)
多个菜单组件包裹在 TsMenuGroup 中,将共享同一个选中路径状态(v-model),适用于多列布局或分类菜单场景。
示例代码
vue
路径、事件切换
基于原生 vue-router 的路由结构适配方案,支持动态菜单渲染。通过配置菜单数据结构与路由保持一致,实现路径联动和跳转逻辑。可自定义菜单图标、子级路径跳转行为等,适用于常规页面级导航结构。
expandByPath 职责:根据路径展开对应的菜单,如展开其他子项时,并需要切换回 v-model 所在的子项展开效果, 那么请调用该方法。 v-model 仅仅在值发生改变时才会展开正确的子项。
示例代码
vue
content-prefix + content-suffix 插槽
在同一个菜单中合并演示前缀与后缀插槽,适用于图标/状态点 + 徽标/状态文本的组合场景。
示例代码
vue
属性 Props
属性名
说明
类型
可选值
默认值
版本说明
v-model
绑定当前选中路径,支持双向绑定
string
value
绑定当前选中路径,建议在非受控的场景下使用
string
0.3.5 新增
menus
菜单列表数据
Array<MenuItem>
variant
外观风格,控制 tab 是卡片型还是文本型
string
card | text
card
selectParentWhenHasChildren
是否在当有子节点时,父项点击触发 change 事件
boolean
false
ssg
是否开启服务端渲染
boolean
false
itemHeight
菜单项高度(px)
number
42
added 0.6.8
itemColumnGap
菜单项之间的纵向间距(px)
number
6
added 0.6.8
direction
菜单方向,默认 vertical;horizontal 支持横向排列与 children 下拉子菜单
'vertical' | 'horizontal'
vertical / horizontal
vertical
added 0.6.9
事件 Events
事件名
说明
回调参数
版本说明
change
值变化时触发
(e: 'change', item: MenuItem): void;
方法 Methods
方法名
说明
参数
返回值
版本说明
expandByPath
展开指定路径,默认为v-model
(path?: string | undefined) => void
-
插槽 Slots
插槽名
说明
版本说明
content-prefix
菜单内容区前缀插槽
changed 0.6.7 #prefix -> #content-prefix
content-suffix
菜单内容区后缀插槽
changed 0.6.7 #suffix -> #content-suffix
expand
菜单项最右侧扩展插槽(独立于内容区)
added 0.6.7
基础用法
行高与间距
横向菜单
嵌套子菜单
菜单组(共享选中状态)
路径、事件切换
content-prefix + content-suffix 插槽
属性 Props
事件 Events
方法 Methods
插槽 Slots
MenuItem Type