Fetch 数据请求
优质
小牛编辑
123浏览
2023-12-01
Fetch 是一个支持下拉刷新及滚动加载的组件。因为这两个操作最终目的都是为了做数据请求,所以取名“Fetch”。
使用
<template>
<div class="fetch-demo"
style="position:absolute;top:0;left:0;bottom:0;right:0;">
<Fetch @fetch="handleFetch">
<div
style="line-height:50px;border-bottom:1px solid #eee;"
v-for="i in count"
:key="i"
>
{{i}}
</div>
</Fetch>
</div>
</template>
import { Fetch } from 'feart';
export default {
name: 'fetch-demo',
components: {
Fetch,
},
data() {
return {
count: 20,
};
},
methods: {
handleFetch(resolve, type) {
// setTimeout代表数据请求
setTimeout(() => {
if (type === 'PULL_REFRESH') {
this.count = 20;
resolve();
return;
}
this.count += 20;
const allLoad = this.count >= 60;
resolve(allLoad);
}, 2000);
},
},
};
注意事项
Fetch 的高度属性被设置为height: 100%
,也就是说其高度由父元素决定,Fetch 自身不会撑起高度。使用 Fetch 时,需要用户为 Fetch 的父元素设置一个高度(通常是屏幕高度)。
Props
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
disableRefresh | 禁用下拉刷新 | Boolean | false |
disableScroll | 禁用滚动加载 | Boolean | false |
stopPropagation | 是否阻止滚动事件冒泡。用于防止嵌套问题 | Boolean | true |
refreshLoadingText | 下拉刷新正在加载时的提示 | String | '' |
scrollLoadingText | 滚动加载正在加载时的提示 | String | '正在加载' |
triggerText | 触发下拉刷新时的提示 | String | '松开加载' |
pullingText | 下拉时的提示 | String | '下拉刷新' |
allLoadedText | 数据完全加载完毕的提示 | String | '没有更多了' |
Events
事件 | 说明 | 参数 |
---|---|---|
fetch | 触发下拉刷新或滚动加载时的回调函数 | fn(resolve, type) |
NOTE: 根据
type
('PULL_REFRESH'
|'SCROLL'
)获取此次触发回调的事件类型。当数据请求完成候,需要调用resolve()
通知组件。对于滚动加载事件,当数据全部加载后调用resolve(true)
的时候记得传入true
。
主动调用函数(this.$refs.fetch.fn
)
函数 | 说明 |
---|---|
scrollToTop | 内容滚动到顶部 |
clearState | 重置组件所有状态 |
reset | 同时执行上面两个函数 |
allLoaded | 行为等同于在滚动加载的回调中调用resolve(true) |