Reference version

This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Picker

用于从列表中选择选项的 SwiftUI Picker 组件。

iOS
tvOS
Included in Expo Go
Recommended version:
~58.0.1

Expo UI Picker 与官方 SwiftUI Picker API 一致,并通过 pickerStyle 修饰符支持所有 Picker 样式。

菜单样式的 Picker,显示水果选项并勾选当前选项菜单样式的 Picker,显示水果选项并勾选当前选项

安装

Terminal
- npx expo install @expo/ui
- yarn expo install @expo/ui
- pnpm expo install @expo/ui
- bun expo install @expo/ui

If you are installing this in an existing React Native app, make sure to install expo in your project.

分段 Picker

SegmentedPickerExample.tsx
import { useState } from 'react'; import { Host, Picker, Text } from '@expo/ui/swift-ui'; import { pickerStyle, tag } from '@expo/ui/swift-ui/modifiers'; const options = ['Apple', 'Banana', 'Orange']; export default function SegmentedPickerExample() { const [selectedTag, setSelectedTag] = useState(options[0]); // 分段式和滚轮式 Picker 会拉伸至指定的宽度,因此在 `matchContents` 下会折叠。 return ( <Host style={{ flex: 1 }}> <Picker modifiers={[pickerStyle('segmented')]} label="选择一种水果" selection={selectedTag} onSelectionChange={selection => { setSelectedTag(selection); }}> {options.map(option => ( <Text key={option} modifiers={[tag(option)]}> {option} </Text> ))} </Picker> </Host> ); }

菜单 Picker

MenuPickerExample.tsx
import { useState } from 'react'; import { Host, Picker, Text } from '@expo/ui/swift-ui'; import { pickerStyle, tag } from '@expo/ui/swift-ui/modifiers'; const options = ['Apple', 'Banana', 'Orange']; export default function MenuPickerExample() { const [selectedTag, setSelectedTag] = useState(options[0]); return ( <Host style={{ flex: 1 }}> <Picker modifiers={[pickerStyle('menu')]} label="选择一种水果" selection={selectedTag} onSelectionChange={selection => { setSelectedTag(selection); }}> {options.map(option => ( <Text key={option} modifiers={[tag(option)]}> {option} </Text> ))} </Picker> </Host> ); }

滚轮 Picker

WheelPickerExample.tsx
import { useState } from 'react'; import { Host, Picker, Text } from '@expo/ui/swift-ui'; import { pickerStyle, tag } from '@expo/ui/swift-ui/modifiers'; const options = ['Apple', 'Banana', 'Orange']; export default function WheelPickerExample() { const [selectedTag, setSelectedTag] = useState(options[0]); return ( <Host style={{ flex: 1 }}> <Picker modifiers={[pickerStyle('wheel')]} label="选择一种水果" selection={selectedTag} onSelectionChange={selection => { setSelectedTag(selection); }}> {options.map(option => ( <Text key={option} modifiers={[tag(option)]}> {option} </Text> ))} </Picker> </Host> ); }

API

import { Picker } from '@expo/ui/swift-ui';

Component

Picker

iOS
tvOS

Type: React.Element<PickerProps<T>>

Displays a native picker component

Example

<Picker modifiers={[pickerStyle('segmented')]}> <Text modifiers={[tag('option1')]}>Option 1</Text> <Text modifiers={[tag(0)]}>Option 3</Text> </Picker>

PickerProps

children

iOS
tvOS
Optional • Type: React.ReactNode

The content of the picker. You can use Text components with tag modifiers to display the options.

label

iOS
tvOS
Optional • Literal type: union

A label displayed on the picker.

Acceptable values are: string | React.ReactNode

onSelectionChange

iOS
tvOS
Optional • Type: (selection: T) => void

Callback function that is called when an option is selected. Gets called with the selected tag value.

selection

iOS
tvOS
Optional • Type: T

The selected option's tag modifier value.

systemImage

iOS
tvOS
Optional • Type: SFSymbol

The name of the system image (SF Symbol). For example: 'photo', 'heart.fill', 'star.circle'