Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法淺析
思想:van-list組件負(fù)責(zé)UI層監(jiān)測(cè)觸底, 執(zhí)行onload函數(shù), page++, 請(qǐng)求下頁(yè)數(shù)據(jù), 和現(xiàn)在數(shù)據(jù)合并顯示更多, 設(shè)置loading為false, 確保下次觸底還能執(zhí)行onLoad
vant是一個(gè)可用于移動(dòng)端的組件庫(kù),搭建頁(yè)面框架,需要使用到vant組件,添加依賴yarn add vant@2.12.15至vue2項(xiàng)目?jī)?nèi),此處用到van-list組件。
vant中的組件van-list來(lái)動(dòng)態(tài)渲染數(shù)據(jù),下拉加載首先需要綁定變量loading(加載狀態(tài))、屬性finished(是否全部加載完成),finished-text全部加載完成顯示的文字
<van-list v-model="loading" :finished="finished" finished-text="沒(méi)有更多了" @load="onLoad" > 正常的遍歷searchResult內(nèi)數(shù)據(jù) 渲染至頁(yè)面內(nèi)容 </van-list>
數(shù)據(jù):注意要有當(dāng)前頁(yè)頁(yè)碼page配合實(shí)現(xiàn)
data() { return { searchResult: [], //搜索到的總的數(shù)據(jù),用此數(shù)組內(nèi)數(shù)據(jù)來(lái)遍歷展示 loading: false, //加載中 (狀態(tài)) - 只有為false, 才能觸底后自動(dòng)觸發(fā)onload方法 finished: false, // 未加載全部 (如果設(shè)置為true, 底部就不會(huì)再次執(zhí)行onload, 代表全部加載完成) page: 1, // 當(dāng)前搜索結(jié)果的頁(yè)碼 }; },
以上為準(zhǔn)備的數(shù)據(jù),
onload 下拉刷新加載更多數(shù)據(jù) (觸底后加載下一頁(yè)數(shù)據(jù))
思想:
1、監(jiān)測(cè)頁(yè)面觸底執(zhí)行onload事件 (onload事件:頁(yè)面內(nèi)所有元素包括圖片等都加載完成后執(zhí)行)
2、配合后臺(tái)接口,傳遞下一頁(yè)的標(biāo)識(shí)
3、拿到下一頁(yè)數(shù)據(jù)后追加到當(dāng)前數(shù)組末尾即可
<script> export default { methods: { // 此為js代碼,監(jiān)聽(tīng)事件,發(fā)送異步操作的數(shù)據(jù)請(qǐng)求 async btn2() { this.loading = false // 優(yōu)化bug,防止出現(xiàn)首次多加載一次的情況 this.finished = false // 加載未結(jié)束 this.page = 1 // 走完函數(shù),就將當(dāng)前頁(yè)恢復(fù)至1,防止后面累加,導(dǎo)致點(diǎn)擊別的篩選條件時(shí)無(wú)效 // 異步發(fā)送請(qǐng)求獲取數(shù)據(jù)賦值給data內(nèi)變量 const { data } = await getSearchResult({ keywords: this.value, // 此為接口需要的參數(shù) limit: 20 }) this.searchResult = data.result.songs }, async onLoad() { // 觸底事件(要加載下一頁(yè)的數(shù)據(jù)), 內(nèi)部會(huì)自動(dòng)把loading改為true,為true后才會(huì)執(zhí)行x this.page++ // 加載至底部就將頁(yè)面值+1 const { data } = await getSearchResult({ keywords: this.value, limit: 20, offset: (this.page - 1) * 20 // 傳參固定公式,頁(yè)面偏移量即一頁(yè)多少數(shù)據(jù) }) if (data.result.songs === undefined) { // 下拉刷新后此次檢索不到數(shù)據(jù)了,表示已經(jīng)將所有數(shù)據(jù)加載完了 return (this.finished = true) // finished賦值為true,表示 不再去進(jìn)行加載了,結(jié)束狀態(tài) } this.searchResult.push(...data.result.songs) // 將每次下拉刷新檢索到的數(shù)據(jù)加入 展示的數(shù)據(jù)列表 this.loading = false // 切記,本次加載完更多數(shù)據(jù)后,一定要把loading改成false, 保證下一次還能觸發(fā)onload方法 } } } </script>
第一次發(fā)送getSearchResult數(shù)據(jù)請(qǐng)求為加載第一頁(yè)數(shù)據(jù),限制獲取數(shù)據(jù)數(shù)量limit為20條,第二次getSearchResult則是下拉到底,再去獲取20條數(shù)據(jù),再添加到第一次保存數(shù)據(jù)的數(shù)組里,這樣就有40條數(shù)據(jù)同時(shí)渲染在了頁(yè)面上,以后每下拉一次,就是此種操作,從請(qǐng)求里獲取不到數(shù)據(jù)了,將finished賦值為true下拉加載事件就會(huì)停止
到此這篇關(guān)于Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法淺析的文章就介紹到這了,更多相關(guān)Vue下拉加載 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue用addRoutes實(shí)現(xiàn)動(dòng)態(tài)路由的示例
本篇文章主要介紹了vue用addRoutes實(shí)現(xiàn)動(dòng)態(tài)路由的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09vue中監(jiān)聽(tīng)input框獲取焦點(diǎn)及失去焦點(diǎn)的問(wèn)題
這篇文章主要介紹了vue中監(jiān)聽(tīng)input框獲取焦點(diǎn),失去焦點(diǎn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07解決vue3項(xiàng)目打包發(fā)布到服務(wù)器后訪問(wèn)頁(yè)面顯示空白問(wèn)題
這篇文章主要介紹了解決vue3項(xiàng)目打包發(fā)布到服務(wù)器后訪問(wèn)頁(yè)面顯示空白問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Vue自定義指令實(shí)現(xiàn)彈窗拖拽四邊拉伸及對(duì)角線拉伸效果
小編最近在做一個(gè)vue前端項(xiàng)目,需要實(shí)現(xiàn)彈窗的拖拽,四邊拉伸及對(duì)角線拉伸,以及彈窗邊界處理功能,本文通過(guò)實(shí)例代碼給大家分享我的實(shí)現(xiàn)過(guò)程及遇到問(wèn)題解決方法,感興趣的朋友一起看看吧2021-08-08ElementUI如何修改Dialog的標(biāo)題樣式
這篇文章主要介紹了ElementUI如何修改Dialog的標(biāo)題樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用
這篇文章主要介紹了vue+elementUI組件tree如何實(shí)現(xiàn)單選加條件禁用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09Vue3圖片上傳報(bào)錯(cuò):Required?part?‘file‘?is?not?present.的原因及解決方法
這篇文章主要介紹了Vue3圖片上傳報(bào)錯(cuò):Required?part?‘file‘?is?not?present.的原因及解決方法,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-09-09vue中el-tree?橫向滾動(dòng)條的實(shí)現(xiàn)
本文詳細(xì)介紹了在Vue框架中使用el-tree組件創(chuàng)建橫向滾動(dòng)條的方法,通過(guò)代碼示例和步驟說(shuō)明,幫助開(kāi)發(fā)者理解和實(shí)現(xiàn)橫向滾動(dòng)功能,感興趣的可以了解一下2024-09-09