This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Expo 路由器分栏视图
一个为原生分栏视图布局提供支持的 Expo Router 子模块。
重要 SplitView 是一个 alpha API,仅在 Expo SDK 55 及更高版本中可用于 iOS。该 API 可能会有破坏性更改,目前尚未准备好用于生产环境。
expo-router/unstable-split-view 是 expo-router 的一个子模块,导出用于使用 平台原生系统分栏视图 构建分栏视图布局的组件。
有关适用于原生和 Web 应用的基于文件的路由库的更多信息,请参阅 Expo Router 参考文档。
平台支持
Split View 仅可在 iOS 上使用。在其他平台上,SplitView 组件会自动回退为标准的 Slot 导航器进行渲染,确保你的应用无需条件代码即可跨所有平台正常工作。
iPhone 支持
在 iPhone 上,SplitView 会自动将所有列折叠为单一视图。一次只会显示一列。
选择初始列
使用 topColumnForCollapsing 属性来控制在分栏视图折叠时显示哪一列:
<SplitView topColumnForCollapsing="primary">{/* ... */}</SplitView>
可接受的值为 primary、supplementary 和 secondary。未设置时,系统将使用其默认行为。
在列之间导航
.show()方法需要react-native-screens4.24.0 或更高版本。SDK 55 捆绑的是~4.23.0,因此你需要手动安装react-native-screens@~4.24.0才能使用此功能。
使用 ref 可以通过 show 方法以编程方式显示特定列:
import { useRef } from 'react'; import { Pressable, Text } from 'react-native'; import { SplitView } from 'expo-router/unstable-split-view'; import type { SplitHostCommands } from 'react-native-screens/experimental'; export default function Layout() { const ref = useRef<SplitHostCommands>(null); return ( <SplitView ref={ref} topColumnForCollapsing="primary"> <SplitView.Column> <Pressable onPress={() => ref.current?.show('secondary')}> <Text>显示主内容</Text> </Pressable> </SplitView.Column> </SplitView> ); }
已知限制
注意: 我们正在积极开发
SplitView,并欢迎反馈。你可以在 Discord 上分享你的想法, 在 GitHub 上提交 issue,或者使用本页底部的 反馈 按钮。
安装
要在你的项目中使用 expo-router/unstable-split-view,你需要在项目中安装 expo-router。请按照 Expo Router 安装指南中的说明进行操作:
了解如何在你的项目中安装 Expo Router。
使用 SplitView.Column
SplitView.Column 用于在你的 split view 布局中定义额外的列。你可以在主内容区域之前最多添加两列。
双列布局
一个带主内容的简单侧边栏:
三列布局
一个带辅助列和主内容的侧边栏:
使用 SplitView.Inspector
SplitView.Inspector 会添加一个从尾随边滑入的补充列,可用于显示更多细节或元数据:
<SplitView> <SplitView.Column>{/* 侧边栏 */}</SplitView.Column> <SplitView.Inspector> <View style={{ flex: 1, padding: 16 }}> <Text>检查器面板</Text> </View> </SplitView.Inspector> </SplitView>
完整示例
这是一个类似密码管理器的应用,包含三列:
app_layout.tsxindex.tsx[type][id].tsxindex.tsxAPI
import { SplitView } from 'expo-router/unstable-split-view';
Components
Type: React.Element<SplitViewProps>
For full list of supported props, see SplitHostProps
Type: React.Element<SplitViewColumnProps>
ReactNodeType: React.Element<SplitViewColumnProps>