下面介紹一款vue移動端下拉重新整理和上拉載入元件,體積小執行快,使用起來很簡單。
一個Vue.js 的下拉重新整理和上拉載入元件。
通過提供簡單的api易於使用。與其他元件庫不同,它使用瀏覽器本身而不是js來作滾動容器,因此它的程式碼量更小,但不損失使用者體驗。
中文 | English
預覽
也可以掃描以下二維碼訪問演示:
<img src="https://user-images.githubusercontent.com/20060839/145163261-02025f86-ac87-4016-859f-15677a6d3cf7.png" width="220" height="220" >
安裝 & 使用
安裝 npm 包
# npm
npm install vuejs-loadmore --save
全域性匯入
import Vue from 'vue';
import VueLoadmore from 'vuejs-loadmore';
Vue.use(VueLoadmore);
國際化支援
支援中文 zh-CN 和英文 en-US, 預設為 zh-CN。
import VueLoadmore from 'vuejs-loadmore';
Vue.use(VueLoadmore, {
lang: 'en-US'
})
你也可以使用 locale.use()
指定語言。
import VueLoadmore, { locale } from 'vuejs-loadmore';
Vue.use(VueLoadmore);
locale.use('en-US');
用法
基礎用法
<vue-loadmore
:on-refresh="onRefresh"
:on-loadmore="onLoad"
:finished="finished">
<div v-for="(item, i) of list" :key="i"></div>
</vue-loadmore>
on-refresh
和 on-loadmore
會在下拉重新整理或滾動到底部時觸發,需要在處理完資料請求後執行回撥函式 done()
。
如果你不需要重新整理,只需要不繫結on-refresh
。
當資料請求完成後,你可以將finished
的資料改為true,這樣就會顯示沒有更多了
。
export default {
data() {
return {
list: [],
page: 1,
pageSize: 10,
finished: false
};
},
mounted() {
this.fetch();
},
methods: {
onRefresh(done) {
this.list = [];
this.page = 1;
this.finished = false;
this.fetch();
done();
},
onLoad(done) {
if (this.page <= 10) {
this.fetch();
} else {
// all data loaded
this.finished = true;
}
done();
},
fetch() {
for (let i = 0; i < this.pageSize; i++) {
this.list.push(this.list.length + 1);
}
this.page++;
}
},
}
錯誤提示
<vue-loadmore
:on-loadmore="onLoad"
:finished="finished"
:error.sync="error">
<div v-for="(item, i) of list" :key="i"></div>
</vue-loadmore>
export default {
data() {
return {
list: [],
finished: false,
error: false,
};
},
methods: {
onLoad() {
fetchSomeThing().catch(() => {
this.error = true;
});
},
},
};
API
Props
Attribute | Description | Type | Default | |
---|---|---|---|---|
on-refresh | 頂部下拉觸發 | function | - | |
pulling-text | 下拉顯示文字 | string | 下拉重新整理 | |
loosing-text | 釋放顯示文字 | string | 釋放重新整理 | |
loading-text | 正在重新整理顯示文字 | string | 正在重新整理 | |
success-text | 重新整理完成顯示文字 | string | 重新整理完成 | |
show-success-text | 是否顯示success-text | boolean | true | |
pull-distance | 觸發正在重新整理狀態的距離 | _number \ | string_ | 50 |
head-height | 正在重新整理顯示區域的高度 | _number \ | string_ | 50 |
animation-duration | 下拉重新整理動畫持續時間 | _number \ | string_ | 200 |
on-loadmore | 滾動到底部觸發 | function | - | |
immediate-check | 是否在mounted之後立即檢查 | boolean | true | |
load-offset | 當滾動條到底部的距離小於 load-offset 時,會發出 on-loadmore | _number \ | string_ | 50 |
finished | 資料是否載入完畢,改變為true,則會顯示finished-text | boolean | false | |
error | 資料是否載入錯誤,on-loadmore 只有在點選錯誤文字時才會觸發,需要sync 修飾符 | boolean | false | |
loading-text | 滾動到底部正在載入顯示文字 | string | 正在載入 | |
finished-text | 滾動到底部載入完畢的顯示文字 | string | 沒有更多了 | |
error-text | 載入錯誤顯示文字 | string | 請求失敗,點選重新載入 |
方法
使用 ref 獲取 List 例項並呼叫例項方法。
Name | Description |
---|---|
checkScroll | 檢查當前的滾動位置,若已滾動至底部,則會觸發 on-loadmore |
例子
檢視demo以快速瞭解如何使用此包。
git clone git@github.com:staticdeng/vuejs-loadmore.git
yarn install
yarn example:dev