JGuang

标签页

Tabs · Ant Design Mobile

交互预览
npm install antd-mobile@5.43.0

标签页 Tabs

内容组之间进行导航切换。

安装

npm install antd-mobile@5.43.0

antd-mobile 是移动网页组件库,不是 React Native 或小程序组件。React 19 项目需在入口用 unstableSetRender 注册 createRoot,否则 Toast、Dialog 等命令式 API 无法渲染;深色模式通过 <html data-prefers-color-scheme="dark"> 切换。

示例来自 Ant Design Mobile 官方仓库(MIT),固定在 npm 5.43.0 对应的提交;示例中的 DemoBlock 等展示辅助组件由 JGuang 重写,不属于 antd-mobile 的 API。

内容组之间进行导航切换。

何时使用

当前内容需要分成同层级结构的组,进行内容切换展示,常用在表单或者列表的顶部。

示例

Tabs

属性

属性说明类型默认值
activeKey当前激活 tab 面板的 keystring | null-
activeLineMode激活 tab 下划线的模式'auto' | 'full' | 'fixed''auto'
defaultActiveKey初始化选中面板的 key,如果没有设置 activeKeystring | null第一个面板的 key
onChange切换面板的回调(key: string) => void-
stretch选项卡头部是否拉伸booleantrue
direction文档排版方向'ltr' | 'rtl''ltr'

CSS 变量

属性说明默认值
--active-line-border-radius当前激活 tab 下划线的圆角var(--active-line-height)
--active-line-color当前激活 tab 下划线的颜色var(--adm-color-primary)
--active-line-height当前激活 tab 下划线的高度2px
--active-title-color当前激活 tab 选项文字颜色var(--adm-color-primary)
--content-paddingtab 内容区的 padding12px
--fixed-active-line-width当前激活 tab 下划线的宽度,仅在 activeLineMode 为 'fixed' 时有效30px
--title-font-size选项卡头文字的大小17px

Tabs.Tab

属性说明类型默认值
destroyOnClose不可见时是否销毁 DOM 结构booleanfalse
disabled是否禁用booleanfalse
forceRender被隐藏时是否渲染 DOM 结构booleanfalse
key对应 activeKeystring-
title选项卡头显示文字ReactNode-

FAQ

Tabs 是否支持 sticky 吸顶效果?

支持,但是 Tabs 并没有一个类似于 sticky 的属性。你可以自己在 Tabs 的外层容器中增加一下 position: sticky 的 CSS 样式,从而实现吸顶效果。

Tabs 怎么配合 Swiper、PullToRefresh、InfiniteScroll 实现一个复杂的信息流界面?

可以参考这个 demo。

Tabs.Tab 关于 key 的类型问题

因为 React 内部会把传入的 key 转为 string,所以这里 key 的类型其实只要是符合 React.Key 都是可以的。