最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法淺析

 更新時(shí)間:2023年02月15日 15:04:59   作者:搬磚IT員  
這篇文章主要介紹了Vue移動(dòng)端下拉加載更多數(shù)據(jù)onload實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

思想: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組件,添加依賴(lài)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)文章

  • Vue3中引入SCSS和LESS依賴(lài)的基本步驟和注意事項(xiàng)

    Vue3中引入SCSS和LESS依賴(lài)的基本步驟和注意事項(xiàng)

    我們項(xiàng)目開(kāi)發(fā)中經(jīng)常遇到樣式里面會(huì)使用less和scss寫(xiě)法, less,scss和stylus都是css的預(yù)處理器,這篇文章主要給大家介紹了關(guān)于Vue3中引入SCSS和LESS依賴(lài)的基本步驟和注意事項(xiàng),需要的朋友可以參考下
    2024-05-05
  • 深入探索VueJS Scoped CSS 實(shí)現(xiàn)原理

    深入探索VueJS Scoped CSS 實(shí)現(xiàn)原理

    這篇文章主要介紹了深入探索VueJS Scoped CSS 實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 如何用Vite構(gòu)建工具快速創(chuàng)建Vue項(xiàng)目

    如何用Vite構(gòu)建工具快速創(chuàng)建Vue項(xiàng)目

    Vite是一個(gè)web開(kāi)發(fā)構(gòu)建工具,由于其原生?ES?模塊導(dǎo)入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關(guān)于如何用Vite構(gòu)建工具快速創(chuàng)建Vue項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • vue引用外部JS的兩種種方法

    vue引用外部JS的兩種種方法

    這篇文章主要介紹了vue引用外部JS的兩種種方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Vue.js列表渲染綁定jQuery插件的正確姿勢(shì)

    Vue.js列表渲染綁定jQuery插件的正確姿勢(shì)

    這篇文章主要為大家詳細(xì)介紹了Vue.js列表渲染綁定jQuery插件的正確姿勢(shì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue文件代碼縮進(jìn)以及格式化代碼方式[自定義]

    vue文件代碼縮進(jìn)以及格式化代碼方式[自定義]

    這篇文章主要介紹了vue文件代碼縮進(jìn)以及格式化代碼方式[自定義],具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue3+Vue Router實(shí)現(xiàn)動(dòng)態(tài)路由導(dǎo)航的示例代碼

    Vue3+Vue Router實(shí)現(xiàn)動(dòng)態(tài)路由導(dǎo)航的示例代碼

    隨著單頁(yè)面應(yīng)用程序(SPA)的日益流行,前端開(kāi)發(fā)逐漸向復(fù)雜且交互性強(qiáng)的方向發(fā)展,在這個(gè)過(guò)程中,Vue.js及其生態(tài)圈的工具(如Vue Router)為我們提供了強(qiáng)大的支持,本文將介紹如何在Vue 3中使用Vue Router實(shí)現(xiàn)動(dòng)態(tài)路由導(dǎo)航,需要的朋友可以參考下
    2024-08-08
  • Vue中動(dòng)態(tài)class的多種寫(xiě)法

    Vue中動(dòng)態(tài)class的多種寫(xiě)法

    這篇文章主要介紹了Vue之動(dòng)態(tài)class的幾種寫(xiě)法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 淺談Vuejs Prop基本用法

    淺談Vuejs Prop基本用法

    本篇文章主要介紹了Vuejs Prop基本用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • vue 子組件修改data或調(diào)用操作

    vue 子組件修改data或調(diào)用操作

    這篇文章主要介紹了vue 子組件修改data或調(diào)用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論

黑龙江省| 邹平县| 盐池县| 康保县| 甘泉县| 怀仁县| 霞浦县| 洛隆县| 普兰店市| 宕昌县| 久治县| 堆龙德庆县| 行唐县| 宁强县| 郴州市| 拉孜县| 郓城县| 松阳县| 浪卡子县| 祁阳县| 岐山县| 微博| 醴陵市| 沿河| 攀枝花市| 宣化县| 塔城市| 英超| 乐山市| 白城市| 泗水县| 蒙阴县| 永川市| 扶绥县| 扬州市| 新巴尔虎左旗| 开鲁县| 江达县| 古交市| 儋州市| 于都县|