按钮
一个可按压的按钮,具有多种视觉变体。
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
一个可按压按钮,在 Android、iOS 和 web 上都能一致渲染。支持 filled、outlined 和 text 三种视觉变体。
安装
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
使用
基本按钮
import { Host, Button } from '@expo/ui'; export default function BasicButtonExample() { return ( <Host matchContents> <Button label="按我" onPress={() => alert('已按下!')} /> </Host> ); }
变体
使用 variant 属性选择一种视觉变体。
import { Host, Column, Button } from '@expo/ui'; export default function ButtonVariantsExample() { return ( <Host matchContents> <Column spacing={8}> <Button variant="filled" label="填充" onPress={() => {}} /> <Button variant="outlined" label="描边" onPress={() => {}} /> <Button variant="text" label="文本" onPress={() => {}} /> </Column> </Host> ); }
自定义内容
传入 children 以提供完全自定义的按钮内容。提供 children 时,会忽略 label 属性。
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' }}>收藏</Text> </Row> </Button> </Host> ); }
禁用
import { Host, Button } from '@expo/ui'; export default function DisabledButtonExample() { return ( <Host matchContents> <Button label="禁用" onPress={() => {}} disabled /> </Host> ); }
API
import { Button } from '@expo/ui';
Component
Type: React.Element<ButtonProps>
A pressable button that supports multiple visual variants.
Props for the Button component.
ReactNodeCustom content rendered inside the button. When provided, label is ignored.
booleanWhether the component is disabled. Disabled components do not respond to user interaction.
stringText label displayed inside the button. Ignored when children is provided.
ModifierConfig[]Platform-specific modifier escape hatch. Pass an array of modifier configs
from @expo/ui/swift-ui/modifiers or @expo/ui/jetpack-compose/modifiers.
() => voidCalled when the component is removed from screen.
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.
stringIdentifier used to locate the component in end-to-end tests.
Types
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'