项目正在快速迭代中,API 与视觉细节可能随版本调整,请勿用于生产环境。
移动端专属组件

PullRefresh 下拉刷新 ​

触屏下拉刷新手势:内容区顶部下拉 → 释放越过阈值触发 refresh,v-model 同步加载中 状态,加载完成后置 false 自动展示成功态并收回。滚动容器不在顶部时不拦截手势(页面 可正常上滚);超过触发距离后 1/3 阻尼跟手,形成「越拉越紧」的手感。状态机: normal → pulling → loosing → loading → success → normal,全程由 change 事件广播。

基础用法 ​

9:41
工作台
下拉刷新
内容条目 #1
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #2
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #3
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #4
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #5
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #6
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #7
触屏设备在滚动区顶部下拉释放即可触发
内容条目 #8
触屏设备在滚动区顶部下拉释放即可触发
html
<eb-pull-refresh v-model="refreshing" @refresh="onRefresh">
  <NewsList :items="items" />
</eb-pull-refresh>
js
async function onRefresh() {
  await reloadFirstScreen()
  refreshing.value = false // 置 false 后自动展示「刷新成功」并收回
}

要点:

  • 手势边界:滚动容器 scrollTop > 0 时下拉不生效(让位给页面滚动);touchmove 以 非被动模式监听,仅在可下拉时 preventDefault 阻断浏览器原生下拉。
  • 状态闭环:refresh 触发时组件已置 loading;业务加载完成把 modelValue 置 false, 成功态停留 success-duration 后自动收回,无需手动清理。

自定义头部 ​

#head 插槽替换默认提示(参数 { status, distance }),可完全自定义动画;四段文案 也可按需覆盖。

9:41
下拉更新内容
自定义头部演示

API ​

PullRefresh Props

参数说明类型默认值
v-model刷新中状态;业务加载完成置 false 触发成功态收回booleanfalse
disabled禁用下拉手势booleanfalse
head-height触发刷新的下拉距离(px),同时是头部高度number50
success-duration成功态停留时长(ms),0 直接收回number500
animation-duration收回/展开动画时长(ms)number300
pulling-text / loosing-text未到阈值 / 越过阈值的提示文案string下拉刷新 / 释放刷新
loading-text / success-text加载中 / 完成后的提示文案string加载中… / 刷新成功

PullRefresh Events

参数说明类型默认值
refresh释放越过阈值时触发,组件已进入 loading——
change状态流转广播(status, oldStatus) => void—
update:modelValuev-model 同步(boolean) => void—

PullRefresh Slots

参数说明类型默认值
default滚动内容——
head自定义头部{ status, distance }默认提示