vue基于vant實(shí)現(xiàn)上拉加載下拉刷新的示例代碼
前言
普遍存在于各種app中的上拉加載下拉刷新功能大家都不陌生吧,一般來說,在數(shù)據(jù)量比較大的情況下,為了更快的渲染和給用戶更好的觀感體驗(yàn),我們會將數(shù)據(jù)做分頁處理,讓其批量加載,這樣一來,在渲染速度上,能給用戶一個比較好的體驗(yàn)效果。話說回來,分頁處理,也就是我們今天要講的上拉加載和下拉刷新。
實(shí)現(xiàn)思路
下拉刷新:
請求接口賦完值后,將接口返回數(shù)據(jù)長度與總條數(shù)進(jìn)行比較控制加載不加載的狀態(tài),在下拉刷新方法中定義起始頁碼為第一頁,調(diào)整加載的狀態(tài)為false,最后調(diào)用請求數(shù)據(jù)的接口方法,做適當(dāng)輕提示即可。
上拉加載:
首先在data中定義一個新的數(shù)組用于將新加載的數(shù)據(jù)與老的數(shù)據(jù)合并,在上拉加載方法中讓加載的頁碼遞增,然后請求接口進(jìn)行賦值,將接口返回數(shù)據(jù)循環(huán)并將數(shù)據(jù)添加到list數(shù)組中,將返回數(shù)據(jù)長度與總條數(shù)進(jìn)行比較控制加載不加載的狀態(tài)實(shí)現(xiàn)上拉加載。
話不多說,下面進(jìn)入實(shí)例開發(fā)。以下是我為了方便大家理解做的一個小demo,大家可以根據(jù)相關(guān)代碼及注釋快速上手操作。
<template>
<div>
<!-- van-pull-refresh:下拉刷新 -->
<van-pull-refresh v-model="isLoading" @refresh="onRefresh">
<!-- 上拉加載 -->
<van-list v-model="loading" :finished="finished" :immediate-check="false" finished-text="沒有更多了"
@load="onLoad" :offset="20">
<div class="outerBox" v-for="(item,index) in list" :key="index">
<div>公司名稱:{{item.gsmc}}</div>
<div>行業(yè)類別:{{item.hylb}}</div>
<div>進(jìn)車限值:{{item.jcxz}}</div>
</div>
</van-list>
</van-pull-refresh>
</div>
</template>
<script>
import {getPassAnalysisList} from '@/api/enforcement' //引入接口文件
export default {
data() {
return {
//傳遞給后端的參數(shù)
incomePayData: {
pageNumber: 1, //請求第幾頁
pageSize: 10, //每頁請求的數(shù)量
},
list: [], //列表數(shù)據(jù)
listTwo: [], //用于上拉加載時將數(shù)據(jù)合并
total: 0, //總頁數(shù)
isLoading: false, //下拉刷新
loading: false, //上拉加載
finished: false, //加載與不加載的狀態(tài)
}
},
mounted() {
this.getPassAnalysisList(); //列表數(shù)據(jù)接口
},
methods: {
//列表數(shù)據(jù)接口
getPassAnalysisList() {
getPassAnalysisList(this.incomePayData).then(res => {
if (res.code == '10000') {
this.list = res.data.records; //將接口返回賦值data定義的數(shù)組
this.total = res.data.total; //將接口返回的總數(shù)據(jù)條數(shù)賦值data中定義的total
if (this.list.length >= this.total) { //將返回數(shù)據(jù)長度與總條數(shù)進(jìn)行比較控制加載不加載的狀態(tài)
this.finished = true;
}
}
})
},
//下拉刷新
onRefresh() {
this.incomePayData.pageNumber = 1; //起始為第一頁
this.finished = false; //加載與不加載的狀態(tài)
setTimeout(() => {
this.isLoading = false; //下拉刷新狀態(tài)
this.getPassAnalysisList() //刷新成功調(diào)用列表方法
this.$toast('刷新成功'); //輕提示信息
}, 700);
},
//上拉加載
onLoad() {
this.incomePayData.pageNumber++; //加載時頁碼遞增
getPassAnalysisList(this.incomePayData).then(res => {
if (res.code == '10000') {
this.listTwo = res.data.records; //將接口返回賦值data定義的數(shù)組
this.total = res.data.total; //將接口返回的總數(shù)據(jù)條數(shù)賦值data中定義的total
this.listTwo.forEach(item => { //循環(huán)返回的數(shù)據(jù)并將數(shù)據(jù)添加到list中
this.list.push(item)
})
// 加載狀態(tài)結(jié)束 狀態(tài)更新為false
this.loading = false;
if (this.list.length >= this.total) { //將返回數(shù)據(jù)長度與總條數(shù)進(jìn)行比較控制加載不加載的狀態(tài)
this.finished = true;
}
}
})
},
}
}
</script>
<style scoped>
/* 外層盒子的樣式 */
.outerBox {
padding: 10px;
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3),
0px 0px 20px rgba(0, 0, 0, 0.1) inset;
margin: 0px 16px 16px 16px;
overflow: hidden;
}
</style>
至此,這個小功能就實(shí)現(xiàn)啦,下圖是實(shí)現(xiàn)的效果展示,感興趣的話可以自己私下試試喲。

到此這篇關(guān)于vue基于vant實(shí)現(xiàn)上拉加載下拉刷新的文章就介紹到這了,更多相關(guān)vue vant上拉加載下拉刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue Spa切換頁面時更改標(biāo)題的實(shí)例代碼
本篇文章主要介紹了Vue Spa切換頁面時更改標(biāo)題的實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
vue3自定義指令自動獲取節(jié)點(diǎn)的width和height代碼示例
這篇文章主要介紹了如何使用ResizeObserver監(jiān)聽組件的寬度和高度,并將其封裝成一個指令以便全局或局部使用,ResizeObserver可以監(jiān)聽元素的多個尺寸屬性,如top、bottom、left等,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
Vue實(shí)現(xiàn)動態(tài)顯示表單項(xiàng)填寫進(jìn)度功能
這篇文章主要介紹了Vue實(shí)現(xiàn)動態(tài)顯示表單項(xiàng)填寫進(jìn)度功能,此功能可以幫助用戶了解表單填寫的進(jìn)度和當(dāng)前狀態(tài),提高用戶體驗(yàn),通常實(shí)現(xiàn)的方式是在表單中添加進(jìn)度條,根據(jù)用戶填寫狀態(tài)動態(tài)更新進(jìn)度條,感興趣的同學(xué)可以參考下文2023-05-05
vue3+Ts使用pinia方式(vue-lic搭建項(xiàng)目)
文章介紹了如何在Vue 3項(xiàng)目中使用Pinia進(jìn)行狀態(tài)管理,主要內(nèi)容包括安裝Pinia、初始化、在main.ts中注冊和使用,以及在.vue的setup中使用state,文章還提到getters和actions的使用可以參考官方文檔,總結(jié)部分表達(dá)了作者希望得到大家支持的意愿2025-01-01
Template?ref在Vue3中的實(shí)現(xiàn)原理詳解
這篇文章主要為大家介紹了Template?ref在Vue3中的實(shí)現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Vue3如何根據(jù)搜索框內(nèi)容跳轉(zhuǎn)至本頁面指定位置
在開發(fā)中我們經(jīng)常遇到這樣的需求,根據(jù)要求跳轉(zhuǎn)至本頁面指定位置,這篇文章主要給大家介紹了關(guān)于Vue3如何根據(jù)搜索框內(nèi)容跳轉(zhuǎn)至本頁面指定位置的相關(guān)資料,需要的朋友可以參考下2022-11-11

