Reference version

选择器

具有菜单和滚轮外观的单选输入。

Android
iOS
Web
Included in Expo Go
Bundled version:
~56.0.6

For the complete documentation index, see llms.txt. Use this file to discover all available pages.

Picker 是一个单选输入控件。你可以使用 <Picker.Item label value /> 子元素来声明选项,这样父级 Picker 就会读取这些选项,并渲染出适合平台的下拉菜单或转轮。

通用 Picker@expo/ui/community/picker 相互独立,后者仍然是 @react-native-picker/picker 的兼容适配层。新代码建议优先使用这个通用 Picker,除非你确实需要 RN-Picker 的 API 表面。

安装

Terminal
npx expo install @expo/ui

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

使用

菜单样式(默认)

PickerMenuExample.tsx
import { useState } from 'react'; import { Host, Row, Picker, Spacer, Text } from '@expo/ui'; const FLAVOURS = [ { label: '香草', value: 'vanilla' }, { label: '巧克力', value: 'chocolate' }, { label: '草莓', value: 'strawberry' }, ]; export default function PickerMenuExample() { const [value, setValue] = useState('vanilla'); return ( <Host style={{ flex: 1 }}> <Row alignment="center" spacing={12} style={{ padding: 16 }}> <Text>口味:</Text> <Spacer flexible /> <Picker selectedValue={value} onValueChange={setValue}> {FLAVOURS.map(f => ( <Picker.Item key={f.value} label={f.label} value={f.value} /> ))} </Picker> </Row> </Host> ); }

转轮样式

appearance="wheel" 会在 iOS 上渲染一个内联可滚动转轮。在 Android 和 web 上,这会回退到平台默认的下拉菜单(Material 3 不提供转轮样式的 picker)。

PickerWheelExample.tsx
import { useState } from 'react'; import { Host, Column, Picker } from '@expo/ui'; const FLAVOURS = [ { label: '香草', value: 'vanilla' }, { label: '巧克力', value: 'chocolate' }, { label: '草莓', value: 'strawberry' }, ]; export default function PickerWheelExample() { const [value, setValue] = useState('chocolate'); return ( <Host style={{ flex: 1 }}> <Column spacing={8} style={{ padding: 16 }}> <Picker selectedValue={value} onValueChange={setValue} appearance="wheel"> {FLAVOURS.map(f => ( <Picker.Item key={f.value} label={f.label} value={f.value} /> ))} </Picker> </Column> </Host> ); }

API

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

Component

Picker

Android
iOS
Web

Type: React.Element<PickerProps<T>>

A single-selection input. Declare options via <Picker.Item label value /> children.

Props for the Picker component, a single-selection input.

PickerProps

appearance

Android
iOS
Web
Optional • Type: PickerAppearance • Default: 'menu'

Visual appearance of the picker. See PickerAppearance.

children

Android
iOS
Web
Optional • Type: ReactNode

<Picker.Item> children that declare the available options.

enabled

Android
iOS
Web
Optional • Type: boolean • Default: true

Whether the picker accepts input.

onValueChange

Android
iOS
Web
Type: (value: T) => void

Called when the user selects an option.

selectedValue

Android
iOS
Web
Type: T

The currently selected value. Must match the value of one of the <Picker.Item> children.

testID

Android
iOS
Web
Optional • Type: string

Identifier used to locate the component in end-to-end tests.

Interfaces

ExtractedPickerItem

Android
iOS
Web

Internal: extracted item data from <Picker.Item> children.

PropertyTypeDescription
labelstring
-
valueT
-

Types

PickerAppearance

Android
iOS
Web

Literal Type: string

Visual appearance of the picker.

  • 'menu' — Compact button that opens a popup/dropdown on tap. Cross-platform default.
  • 'wheel' — Scrollable rotor UI that's always visible inline. iOS only; on Android and web this falls back to the platform's default dropdown.

Acceptable values are: 'wheel' | 'menu'

PickerItemValue

Android
iOS
Web

Literal Type: union

The type of values a Picker.Item can carry.

Acceptable values are: string | number