This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
TabView
用于分页或标签式内容的 SwiftUI TabView 组件。
Expo UI TabView 与官方 SwiftUI TabView API 相匹配,并通过 tabViewStyle 修饰符在不同样式之间切换。


注意: 对于跨全屏路由的底部标签导航,请改用
expo-router/native-tabs
安装
If you are installing this in an existing React Native app, make sure to install expo in your project.
用法
每个页面都是一个 <TabView.Tab> 子项,并通过 value 属性进行标识。TabView 不会设置自身高度——请为其设置 frame,或将其放置在具有高度的父级中。
页面样式(可滑动分页器)
使用 tabViewStyle({ type: 'page' }) 创建带有可选点状指示器的水平分页器。传入 defaultSelection,即可在不通过 React 控制的情况下,让分页器从指定页面开始。
受控选择
传入 selection 和 onSelectionChange,即可通过 React 状态驱动激活的标签页。每个 <TabView.Tab> 的 value 都会与 selection 进行匹配。当 selection 从 JS 发生变化时,添加 animation 修饰符即可为过渡添加动画。
页面指示点
将 indexViewStyle 修饰符与 tabViewStyle({ type: 'page' }) 一起使用,以控制点状指示器。将 indexDisplayMode 设置为 'always'、'never' 或 'automatic',并设置 backgroundDisplayMode,以在点状指示器后方渲染半透明胶囊背景。
底部标签栏
使用 tabViewStyle({ type: 'automatic' }) 采用 SwiftUI 的默认标签栏。每个标签的 label 和 systemImage 会填充标签栏项目。对标签使用 badge 修饰符,即可为其标签栏项目附加徽章。
注意: 对于跨全屏路由的底部标签导航,请改用
expo-router/native-tabs
API
import { TabView } from '@expo/ui/swift-ui';
Component
Type: React.Element<TabViewProps>
A SwiftUI TabView. Pair with modifiers to choose the appearance:
tabViewStyle({ type: 'page' })— swipeable pager.tabViewStyle({ type: 'automatic' })— bottom tab bar.tabViewStyle({ type: 'sidebarAdaptable' })— sidebar on iPad, tab bar on iPhone.
Use <TabView.Tab> children to define pages. Each tab is identified by its
value prop, which is used for selection.
For routed bottom-tab navigation across full-screen routes, prefer
expo-router/native-tabs.
stringIdentifies this tab. Matched against the parent TabView's selection
and defaultSelection props.
union<TabView.Tab> elements defining the pages.
Acceptable values are: ReactElement<unknown, string | JSXElementConstructor<any>> | ReactElement[]
stringThe initially selected tab when the component is uncontrolled
(no selection prop). Ignored if selection is provided.
(selection: string) => voidCalled when the selected tab changes.
stringThe selected tab (controlled mode). Pair with onSelectionChange.
Pass defaultSelection instead to let the native view manage state.