Skip to content

Tabs 标签页

xy-tabs 适合做页面分区、局部导航和视图切换。当前版本强调键盘可达性、禁用项跳过和插槽化面板内容。

何时使用

  • 需要在同一页面内切换不同内容区域(如基本信息 / 操作日志 / 关联数据)时。
  • 需要顶部或侧边局部导航时,配合 tab-position 调整方向。
  • 需要可增删的页签(如浏览器标签式多页签工作台)时,使用 editable
  • 需要切换前拦截(如未保存提醒、权限校验)时,使用 before-leave
  • 需要页签过多时自动滚动导航时,组件内置滚动按钮支持。

何时不使用

  • 需要步骤引导式流程(上一步 / 下一步)时,优先使用 xy-steps
  • 需要折叠展开内容区块时,优先使用 xy-collapse
  • 需要页面级路由切换时,应使用路由方案而非 Tabs。
  • 内容区域之间有强依赖关系(必须按顺序填写)时,不适合用自由切换的 Tabs。

基础用法

最常见的用法是传一组 items,再通过默认插槽渲染当前激活面板内容。

Dashboard

面板

用更轻的导航条切换概览、成员和账单等局部视图。

禁用页签

禁用页签会被键盘导航自动跳过,适合放“暂未开放”或当前不可切换的面板。

当前页签:

禁用项会在键盘导航时被自动跳过,适合暂未开放或权限不足的页签。

风格与位置

typetab-position 用于区分视觉语义和布局方向,stretch 则适合更强的分区感。

Workspace

侧边面板

把页签当成局部导航,内容区更像一个独立工作台,而不是普通卡片。

滚动导航

当页签数量过多超出容器宽度时,会自动显示前后滚动按钮,并把激活项滚动到可见区域。

Scrollable nav

面板

页签过多时可以通过前后按钮切换,并且激活项会自动滚动到可见区域。

切换前守卫

before-leave 适合未保存变更提醒、权限校验或异步确认。

草稿未保存
当前页签:

新增与关闭页签

editable 适合后台控制台、详情抽屉和工作台式视图切换,父层通过事件维护 items 即可。

Workspace tabs

面板

这一组适合控制台、侧滑详情和多个局部工作区共存的场景。

方法与外部控制

通过 expose 出来的 currentName,可以把 Tabs 接进更复杂的页面流程或工具栏操作。

expose.currentName:-

面板

这个示例展示了外部按钮控制激活页签,以及通过 expose 读取当前 key。

激活页签后,可以继续用键盘 ArrowLeftArrowRightHomeEnd 做导航。

API

Tabs Attributes

属性说明类型默认值
model-value当前激活项TabsProps["modelValue"]首个可用项
default-value非受控场景下的初始激活项TabsProps["defaultValue"]undefined
items页签项配置TabItem[][]
type页签风格TabsType''
tab-position页签位置TabsPosition'top'
closable是否默认显示关闭按钮booleanfalse
addable是否显示新增按钮booleanfalse
editable是否同时开启新增和关闭能力booleanfalse
stretch是否拉伸平铺页签booleanfalse
before-leave切换前守卫TabsBeforeLeaveundefined
tabindex激活页签的 tabindexstring | number0

TabItem

字段说明类型默认值
key唯一标识string
label展示文案string
disabled是否禁用booleanfalse
closable是否显示关闭按钮boolean跟随 Tabs

Tabs Events

事件说明参数
update:model-value激活项变化TabsModelValueChangeHandler
change切换页签时触发TabsChangeHandler
tab-click点击页签时触发TabsTabClickHandler
edit新增或关闭页签时触发TabsEditHandler
tab-remove关闭页签时触发TabsTabRemoveHandler
tab-add点击新增页签时触发TabsTabAddHandler

Tabs Slots

插槽说明
default面板内容,插槽参数为 TabsDefaultSlotProps
add-icon自定义新增按钮图标

Tabs Exposes

暴露项说明类型
currentName当前激活页签 keyTabsInstance["currentName"]
scrollToActiveTab将激活页签滚动到可视区域TabsInstance["scrollToActiveTab"]