选项卡切换组件。
TAB 让用户可以在不同子任务、视图、模式之间切换,它具有全局导航的作用,是全局功能的主要展示和切换区域,一个TAB标记一个核心功能,TAB之间可以快速点击切换。该窗口包含2个以上的选项卡,所有选项卡可以排列在一行中,即使该用户界面被本地化后也是如此。提供平级的区域将大块内容进行收纳和展现,保持界面整洁。
Fusion 提供了三级选项卡,分别用于不同的场景。
如果您不想开启动效,可以通过设置 animation 属性值为 false 来关闭。
根据使用场景及触发控件的类型,可以通过 shape 属性配置选项卡的类型,主要包括:
pure 普通选项卡(默认)wrapped 包裹型选项卡text 文本型选项卡capsule 胶囊型选项卡默认情况 Tab 不会提前渲染好所有的内容,而是根据 Tab 的激活情况依次进行渲染。
lazyLoad={false} 一次渲染所有 TabItem 内容。unmountInactiveTabs 在切换选项卡时自动卸载其他 TabItem。当 Tab 标签非常多时,组件会自动增加滑动支持 (可以左右、上下滑动)。可以用过 excessMode 属性切换滑动模式,该属性仅在tabPosition为top或者bottom时生效。
Tab 允许开发者在上层进行自由的行为控制,例如用户可以基于 Tab 开发一个标题部分双击可编辑的 Tab , 此时用户只要传入自定义组件给 TabPane 即可,Tab 可以将底层事件对象传递给用户的自定义组件。
当 Tab 位于 Grid 组件的布局中时,由于 Grid 默认使用 flex 布局方式,当选项卡数量过多时,会导致内层元素撑起整个 flex 容器,此时需要给容器添加自定义样式 overflow: hidden。
| 参数 | 说明 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| activeKey | 被激活的选项卡的 key, 赋值则 tab 为受控组件,用户无法切换 | string | - | |
| defaultActiveKey | 初始化时被激活的选项卡的 key | string | - | |
| shape | 外观形态 | 'pure' | 'wrapped' | 'text' | 'capsule' | 'pure' | |
| animation | 是否开启动效 | boolean | true | |
| excessMode | 选项卡过多时的滑动模式 | 'slide' | 'dropdown' | 'slide' | |
| tabPosition | 导航选项卡的位置,只适用于包裹型(wrapped)选项卡 | 'top' | 'bottom' | 'left' | 'right' | 'top' | |
| size | 尺寸 | 'small' | 'medium' | 'medium' | |
| triggerType | 激活选项卡的触发方式 | 'hover' | 'click' | 'click' | |
| lazyLoad | 是否延迟加载 TabPane 的内容,默认开启,即不提前渲染 | boolean | true | |
| unmountInactiveTabs | 是否自动卸载未处于激活状态的选项卡 | boolean | false | |
| navStyle | 导航条的自定义样式 | CSSProperties | - | |
| navClassName | 导航条的自定义样式类 | string | - | |
| contentStyle | 内容区容器的自定义样式 | CSSProperties | - | |
| contentClassName | 内容区容器的自定义样式类 | string | - | |
| extra | 导航栏附加内容 | ReactNode | - | |
| disableKeyboard | 禁用键盘事件 | boolean | false | |
| onClick | 点击单个选项卡时触发的回调 | (key: string) => void | - | |
| onChange | 选项卡发生切换时的事件回调 签名: 参数: key: 改变后的 key |
(key: string) => void | - | |
| onClose | 选项卡被关闭时的事件回调 签名: 参数: key: 关闭的选项卡的 key |
(key: string) => void | - | |
| tabRender | 自定义选项卡模板渲染函数 签名: 参数: key: 当前 Tab.Item 的 key 值 props: 传给 Tab.Item 的所有属性键值对返回值 返回值: - 返回自定义组件 |
(key: string, props: Record<string, unknown>) => ReactNode | - | |
| popupProps | 弹层属性透传,只有当 excessMode 为 dropdown 时生效 | ComponentPropsWithRef<typeof Popup> | - | |
| icons | 自定义 icon | { dropdown?: string | ReactNode; prev?: string | ReactNode; next?: string | ReactNode; } |
- | |
| showAdd | 展示新增按钮 | boolean | - | |
| onAdd | 新增的事件回调 | () => void | - | |
| addIcon | 自定义添加按钮 | ReactNode | - |
| 参数 | 说明 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| title | 选项卡标题 | ReactNode | - | |
| closeable | 单个选项卡是否可关闭 | boolean | false | |
| disabled | 选项卡是否被禁用 | boolean | false | |
| style | 导航栏单个选项卡样式 | CSSProperties | - | |
| className | 导航栏单个选项卡样式类 | string | - | |
| onClick | 导航栏单个选项卡点击时的回调 | (key: string, e: React.MouseEvent<HTMLElement>) => void | - | |
| onMouseEnter | 导航栏单个选项卡鼠标移入时的回调 | (key: string, e: React.MouseEvent<HTMLElement>) => void | - | |
| onMouseLeave | 导航栏单个选项卡鼠标移出时的回调 | (key: string, e: React.MouseEvent<HTMLElement>) => void | - | |
| children | 子元素 | React.ReactNode | - |
| 按键 | 说明 |
|---|---|
| Right Arrow | 切换至前一项Tab.Item |
| Left Arrow | 切换至后一项Tab.Item |