PullToRefreshBox
一个用于下拉刷新交互的 Jetpack Compose PullToRefreshBox 组件。
Android
Included in Expo Go
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
对于带下拉刷新的跨平台列表,请参见List—— 在 Android 上基于PullToRefreshBox构建。
Expo UI PullToRefreshBox 与官方 Jetpack Compose PullToRefreshBox API 一致。它会包装可滚动内容,并在下拉时显示刷新指示器。

安装
Terminal
- npx expo install @expo/uiIf you are installing this in an existing React Native app, make sure to install expo in your project.
用法
基本下拉刷新
将可滚动内容包裹在 PullToRefreshBox 中,以添加下拉刷新行为。
BasicPullToRefresh.tsx
import { useState, useCallback } from 'react'; import { Host, PullToRefreshBox, LazyColumn, ListItem } from '@expo/ui/jetpack-compose'; export default function BasicPullToRefresh() { const [refreshing, setRefreshing] = useState(false); const onRefresh = useCallback(() => { setRefreshing(true); setTimeout(() => { setRefreshing(false); }, 2000); }, []); return ( <Host style={{ height: 400 }}> <PullToRefreshBox isRefreshing={refreshing} onRefresh={onRefresh}> <LazyColumn> <ListItem> <ListItem.HeadlineContent>项目 1</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 2</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 3</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 4</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 5</ListItem.HeadlineContent> </ListItem> </LazyColumn> </PullToRefreshBox> </Host> ); }
自定义指示器颜色
使用 indicator 属性来自定义加载动画和容器颜色。
CustomIndicatorColors.tsx
import { useState, useCallback } from 'react'; import { Host, PullToRefreshBox, LazyColumn, ListItem } from '@expo/ui/jetpack-compose'; export default function CustomIndicatorColors() { const [refreshing, setRefreshing] = useState(false); const onRefresh = useCallback(() => { setRefreshing(true); setTimeout(() => { setRefreshing(false); }, 2000); }, []); return ( <Host style={{ height: 400 }}> <PullToRefreshBox isRefreshing={refreshing} onRefresh={onRefresh} indicator={{ color: '#6200EE', containerColor: '#F5F5F5' }}> <LazyColumn> <ListItem> <ListItem.HeadlineContent>项目 1</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 2</ListItem.HeadlineContent> </ListItem> <ListItem> <ListItem.HeadlineContent>项目 3</ListItem.HeadlineContent> </ListItem> </LazyColumn> </PullToRefreshBox> </Host> ); }
API
import { PullToRefreshBox } from '@expo/ui/jetpack-compose';
Component
Type: React.Element<PullToRefreshBoxProps>
A pull-to-refresh container that wraps scrollable content and shows a refresh indicator when pulled,
matching Compose's PullToRefreshBox.
Optional • Type:
ContentAlignment • Default: 'topStart'Alignment of children within the box.
Optional • Type:
PullToRefreshIndicatorPropsConfiguration for the loading indicator shown during pull-to-refresh.