Tab

选项卡切换组件。

何时使用 #

TAB 让用户可以在不同子任务、视图、模式之间切换,它具有全局导航的作用,是全局功能的主要展示和切换区域,一个TAB标记一个核心功能,TAB之间可以快速点击切换。该窗口包含2个以上的选项卡,所有选项卡可以排列在一行中,即使该用户界面被本地化后也是如此。提供平级的区域将大块内容进行收纳和展现,保持界面整洁。

Fusion 提供了三级选项卡,分别用于不同的场景。

  • 普通选项卡,引领整页面的内容,起导航的作用。
  • 文本型选项卡。
  • 包裹型选项卡,在页面结构中,只是局部展示,需要和其他内容结合出现。
  • 胶囊型选项卡。

如何使用 #

如果您不想开启动效,可以通过设置 animation 属性值为 false 来关闭。

代码演示 #

简单用法 #

使用 Tab 最简单的例子。

形态 #

根据使用场景及触发控件的类型,可以通过 shape 属性配置选项卡的类型,主要包括:

  • pure 普通选项卡(默认)
  • wrapped 包裹型选项卡
  • text 文本型选项卡
  • capsule 胶囊型选项卡

小号尺寸 #

可以通过 size=small 设置小号尺寸,一般用于弹出框等较狭窄的容器内。

按需加载和自动卸载 #

默认情况 Tab 不会提前渲染好所有的内容,而是根据 Tab 的激活情况依次进行渲染。

  • 可以设置 lazyLoad={false} 一次渲染所有 TabItem 内容。
  • 可以设置 unmountInactiveTabs 在切换选项卡时自动卸载其他 TabItem。

位置 #

包裹型选项卡支持通过 tabPosition 属性设置选项卡的位置,支持 top | right | bottom | left 四个方向。

超出时滑动 #

当 Tab 标签非常多时,组件会自动增加滑动支持(可以左右、上下滑动)。可以用过 excessMode 属性切换滑动模式,该属性仅在tabPositiontop或者bottom时生效。

可关闭/新增选项卡 #

可关闭选项卡,可以通过在 Tab.Item 上设置 closeable 属性设置该选项卡是否可关闭。可以通过 showAdd 开启新增功能

触发类型 #

Tab 支持 click 切换和 hover 切换两种触发类型,默认为 click 触发,您可以使用 triggerType 属性修改默认的触发类型。

禁用 #

可以通过 disabled 属性禁用某一个选型卡。

自定义样式 #

在 Tab 已有样式的基础上,可以通过 contentStyle, contentClassName 等属性自由的进行样式自定义。

自定义选项卡 #

Tab 支持使用 tabRender 属性返回自定义组件作为选项卡内容,注意该属性接收函数作为属性值。

附加额外内容 #

通过 extra 属性添加附加内容,请确保只在有限选项卡的情况下才使用附加内容, 该功能在选项卡溢出时会和溢出导航的按钮冲突。

可编辑的 Tab #

Tab 允许开发者在上层进行自由的行为控制,例如用户可以基于 Tab 开发一个标题部分双击可编辑的 Tab , 此时用户只要传入自定义组件给 TabPane 即可,Tab 可以将底层事件对象传递给用户的自定义组件。

在 Grid 中使用 Tab #

当 Tab 位于 Grid 组件的布局中时,由于 Grid 默认使用 flex 布局方式,当选项卡数量过多时,会导致内层元素撑起整个 flex 容器,此时需要给容器添加自定义样式 overflow: hidden

选项卡嵌套 #

可以将不同类型的选项卡进行嵌套

禁止键盘事件 #

通过 disabledKeyboard=true 禁止 Tab 聚焦时的键盘 ,, , 切换

API #

Tab #

参数 说明 类型 默认值
activeKey 被激活的选项卡的 key, 赋值则tab为受控组件, 用户无法切换 Number/String -
size 尺寸

可选值:
'small', 'medium'
Enum 'medium'
shape 外观形态

可选值:
'pure', 'wrapped', 'text', 'capsule'
Enum 'pure'
defaultActiveKey 初始化时被激活的选项卡的 key Number/String -
animation 是否开启动效 Boolean true
excessMode 选项卡过多时的滑动模式

可选值:
'slide', 'dropdown'
Enum 'slide'
tabPosition 导航选项卡的位置,只适用于包裹型(wrapped)选项卡

可选值:
'top', 'bottom', 'left', 'right'
Enum 'top'
triggerType 激活选项卡的触发方式

可选值:
'hover', 'click'
Enum 'click'
lazyLoad 是否延迟加载 TabItem 的内容, 默认开启, 即不提前渲染 Boolean true
unmountInactiveTabs 是否自动卸载未处于激活状态的选项卡 Boolean false
navStyle 导航条的自定义样式 Object -
navClassName 导航条的自定义样式类 String -
contentStyle 内容区容器的自定义样式 Object -
contentClassName 内容区容器的自定义样式类 String -
extra 导航栏附加内容 ReactNode -
disableKeyboard 禁止键盘事件,设置后无法通过键盘的上下左右按键,切换当前选中的tab Boolean false
onClick 点击单个选项卡时触发的回调

签名:
Function() => void
Function () => {}
onChange 选项卡发生切换时的事件回调

签名:
Function(key: String/Number) => void
参数:
key: {String/Number} 改变后的 key
Function () => {}
onClose 选项卡被关闭时的事件回调

签名:
Function(key: String/Number) => void
参数:
key: {String/Number} 关闭的选项卡的 key
Function () => {}
tabRender 自定义选项卡模板渲染函数

签名:
Function(key: String, props: Object) => ReactNode
参数:
key: {String} 当前 Tab.Item 的 key 值
props: {Object} 传给 Tab.Item 的所有属性键值对
返回值:
{ReactNode} 返回自定义组件
Function -
popupProps 弹层属性透传, 只有当 excessMode 为 dropdown 时生效 Object -
icons 自定义组件内 icon Object {}
showAdd 新增按钮 Boolean -
onAdd 新增的事件回调

签名:
Function() => void
Function -
addIcon 自定义添加按钮 ReactNode -

Tab.Item #

参数 说明 类型 默认值
title 选项卡标题 ReactNode -
closeable 单个选项卡是否可关闭 Boolean false
disabled 选项卡是否被禁用 Boolean -

无障碍键盘操作指南 #

按键 说明
Right Arrow 切换至前一项Tab.Item
Left Arrow 切换至后一项Tab.Item