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

按钮

一个可按下的按钮,具有多种视觉变体。

Android
iOS
Web
Included in Expo Go
Recommended version:
~57.0.3

一个可按压的按钮,在 Android、iOS 和网页上呈现一致。支持 filledoutlinedtext 视觉变体。

🌐 A pressable button that renders consistently across Android, iOS, and web. Supports filled, outlined, and text visual variants.

安装

🌐 Installation

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.

用法

🌐 Usage

基础按钮

🌐 Basic button

BasicButtonExample.tsx
import { Host, Button } from '@expo/ui'; export default function BasicButtonExample() { return ( <Host matchContents> <Button label="Press me" onPress={() => alert('Pressed!')} /> </Host> ); }

变体

🌐 Variants

使用 variant 属性选择一个视觉变体。

🌐 Pick a visual variant with the variant prop.

ButtonVariantsExample.tsx
import { Host, Column, Button } from '@expo/ui'; export default function ButtonVariantsExample() { return ( <Host matchContents> <Column spacing={8}> <Button variant="filled" label="Filled" onPress={() => {}} /> <Button variant="outlined" label="Outlined" onPress={() => {}} /> <Button variant="text" label="Text" onPress={() => {}} /> </Column> </Host> ); }

自定义内容

🌐 Custom content

传递 children 以实现完全自定义的按钮内容。当提供 children 时,label 属性将被忽略。

🌐 Pass children for fully custom button contents. The label prop is ignored when children is provided.

CustomButtonExample.tsx
import { Host, Button, Row, Icon, Text } from '@expo/ui'; export default function CustomButtonExample() { return ( <Host matchContents> <Button onPress={() => {}}> <Row spacing={6} alignment="center"> <Icon name={Icon.select({ ios: 'star.fill', android: require('@expo/material-symbols/star.xml'), })} size={16} color="#FFFFFF" /> <Text textStyle={{ color: '#FFFFFF' }}>Favorite</Text> </Row> </Button> </Host> ); }

已禁用

🌐 Disabled

DisabledButtonExample.tsx
import { Host, Button } from '@expo/ui'; export default function DisabledButtonExample() { return ( <Host matchContents> <Button label="Disabled" onPress={() => {}} disabled /> </Host> ); }

应用接口

🌐 API

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

Component

Button

Type: React.Element<ButtonProps>

A pressable button that supports multiple visual variants.

Props for the Button component.

ButtonProps

children

Optional • Type: ReactNode

Custom content rendered inside the button. When provided, label is ignored.

disabled

Only for:
Android
iOS
Web

Optional • Type: boolean

Whether the component is disabled. Disabled components do not respond to user interaction.

hidden

Only for:
Android
iOS
Web

Optional • Type: boolean

Whether the component is hidden.

label

Optional • Type: string

Text label displayed inside the button. Ignored when children is provided.

modifiers

Only for:
Android
iOS

Optional • Type: ModifierConfig[]

Platform-specific modifier escape hatch. Pass an array of modifier configs from @expo/ui/swift-ui/modifiers or @expo/ui/jetpack-compose/modifiers. A modifier supplied here replaces any modifier of the same type that the component derives from style or other props.

onAppear

Only for:
Android
iOS
Web

Optional • Type: () => void

Called when the component appears on screen.

onDisappear

Only for:
Android
iOS
Web

Optional • Type: () => void

Called when the component is removed from screen.

onPress

Optional • Type: () => void

Called when the button is pressed.

style

Only for:
Android
iOS
Web

Optional • Type: Pick<ViewStyle, 'padding' | 'paddingHorizontal' | 'paddingVertical' | 'paddingTop' | 'paddingBottom' | 'paddingLeft' | 'paddingRight' | 'backgroundColor' | 'borderRadius' | 'borderWidth' | 'borderColor' | 'opacity' | 'width' | 'height'>

Platform-agnostic style properties. These are translated to SwiftUI modifiers on iOS and Jetpack Compose modifiers on Android.

testID

Only for:
Android
iOS
Web

Optional • Type: string

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

variant

Optional • Type: ButtonVariant • Default: 'filled'

Visual variant of the button.

Types

ButtonVariant

Literal Type: string

Visual variant of a Button.

  • 'filled' — solid background color (default).
  • 'outlined' — transparent background with a border.
  • 'text' — no background or border, text only.

Acceptable values are: 'filled' | 'outlined' | 'text'