# PullRefresh 下拉刷新
# 引入
import PressPullRefresh from 'press-ui/press-pull-refresh/press-pull-refresh';
export default {
components: {
PressPullRefresh,
}
}
# 代码演示
# 基础用法
下拉刷新时会触发 refresh
事件,在事件的回调函数中可以进行同步或异步操作,操作完成后将 v-model
设置为 false
,表示加载完成。
<press-pull-refresh
v-model="isLoading"
@refresh="onRefresh"
>
<p>刷新次数: {{ count }}</p>
</press-pull-refresh>
export default {
data() {
return {
count: 0,
isLoading: false,
};
},
methods: {
onRefresh() {
setTimeout(() => {
Toast('刷新成功');
this.isLoading = false;
this.count++;
}, 1000);
},
},
};
# 成功提示
通过 success-text
可以设置刷新成功后的顶部提示文案。
<press-pull-refresh
v-model="isLoading"
success-text="刷新成功"
@refresh="onRefresh"
>
<p>刷新次数: {{ count }}</p>
</press-pull-refresh>
# 自定义提示
通过插槽可以自定义下拉刷新过程中的提示内容。
<press-pull-refresh
v-model="isLoading"
:head-height="80"
@refresh="onRefresh"
>
<!-- 下拉提示,通过 scale 实现一个缩放效果 -->
<template #pulling="props">
<img
class="doge"
src="https://mike-1255355338.cos.ap-guangzhou.myqcloud.com/article/2024/7/own_mike_9ebf38f1fc4354df84.png"
:style="{ transform: `scale(${props.distance / 80})` }"
/>
</template>
<!-- 释放提示 -->
<template #loosing>
<img class="doge" src="https://mike-1255355338.cos.ap-guangzhou.myqcloud.com/article/2024/7/own_mike_9ebf38f1fc4354df84.png" />
</template>
<!-- 加载提示 -->
<template #loading>
<img class="doge" src="https://mike-1255355338.cos.ap-guangzhou.myqcloud.com/article/2024/7/own_mike_aecbd81ffaca64b6f4.jpg" />
</template>
<p>刷新次数: {{ count }}</p>
</press-pull-refresh>
<style>
.doge {
width: 140px;
height: 72px;
margin-top: 8px;
border-radius: 4px;
}
</style>
# API
# Props
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
value | 是否处于加载中状态 | boolean | - |
pulling-text | 下拉过程提示文案 | string | 下拉即可刷新... |
loosing-text | 释放过程提示文案 | string | 释放即可刷新... |
loading-text | 加载过程提示文案 | string | 加载中... |
success-text | 刷新成功提示文案 | string | - |
success-duration | 刷新成功提示展示时长(ms) | number | string | 500 |
animation-duration | 动画时长 | number | string | 300 |
head-height | 顶部内容高度 | number | string | 50 |
pull-distance | 触发下拉刷新的距离 | number | string | 与 head-height 一致 |
disabled | 是否禁用下拉刷新 | boolean | false |
# Events
事件名 | 说明 | 回调参数 |
---|---|---|
refresh | 下拉刷新时触发 | - |
# Slots
名称 | 说明 | 参数 |
---|---|---|
default | 自定义内容 | - |
normal | 非下拉状态时顶部内容 | - |
pulling | 下拉过程中顶部内容 | { distance: 当前下拉距离 } |
loosing | 释放过程中顶部内容 | { distance: 当前下拉距离 } |
loading | 加载过程中顶部内容 | { distance: 当前下拉距离 } |
success | 刷新成功提示内容 | - |
# 在线调试
# 常见问题
# PullRefresh 的内容未填满屏幕时,只有一部分区域可以下拉?
默认情况下,下拉区域的高度是和内容高度保持一致的,如果需要让下拉区域始终为全屏,可以给 PullRefresh 设置一个与屏幕大小相等的最小高度:
<press-pull-refresh custom-style="min-height: 100vh;" />
# PullRefresh 的触发条件是?
PullRefresh 的触发条件是「父级滚动元素的滚动条在顶部位置」。
- 如果最近一个可滚动的父级元素是
window
,则要求window.pageYOffset === 0
。 - 如果最近一个可滚动的父级元素是
Element
,则要求Element.scrollTop === 0
。