PullToRefresh 下拉刷新
通常与 InfiniteScroll 无限滚动组件组合使用。
目前仅支持 touch 事件,请切换到移动端调试模式尝试。
示例
基础用法
<PullToRefresh onRefresh={handleRefresh}>
{@render content()}
</PullToRefresh>
自定义+震动
<PullToRefresh
class="-mt-[1px] h-full"
vibrate
completeDuration={0}
onRefresh={handleRefresh}
>
{@render content()}
{#snippet header(status, offset)}
<div class="flex items-center justify-center p-2">
{#if status === 'refreshing'}
<Icon
class="animate-spin rounded-full bg-white p-1 text-blue-600"
name="refresh"
size={32}
/>
{:else}
<Icon
class="rounded-full bg-white p-1 {status === 'loosing'
? 'text-blue-600'
: 'text-gray-400'}"
style="rotate: {offset * 5}deg"
name="reset-right"
size={32}
/>
{/if}
</div>
{/snippet}
</PullToRefresh>
PullToRefresh
属性
属性 |
说明 |
类型 |
默认值 |
header |
下拉刷新头部 |
Snippet<[status: PullToRefreshStatus, offset: number]> |
组件默认样式 |
maxPullDownDistance |
最大下拉高度(px) |
number |
100 |
refreshThreshold |
刷新阈值(px) |
number |
60 |
vibrate |
震动反馈 |
boolean |
false |
completeDuration |
完成状态持续时间(毫秒)。填 0 表示不会进入等待状态 |
number |
500 |
disabled |
禁用状态 |
boolean |
false |
Header Snippet
Snippet<[status: PullToRefreshStatus, offset: number]>
属性 |
说明 |
类型 |
status |
当前组件状态 |
PullToRefreshStatus |
offset |
当前下拉高度(px) |
number |
PullToRefreshStatus
export type PullToRefreshStatus =
| 'idle'
| 'pulling'
| 'loosing'
| 'refreshing'
| 'complete'
事件
事件 |
说明 |
类型 |
onRefresh |
下拉刷新事件 |
() => any |