vue 無限滾動問題


如今web開發中,無限加載是必需的一項功能,尤其是在移動端開發中,一個列表往往默認只加載10條,想看更多只能逐漸往下翻頁。那么今天就看看如何在Vue-Cli中實現這個功能。

當前找到兩個插件

1 element-ui的infiniteScroll無限滾動(適合vue2,vue3)

  infiniteScroll是2.9.0版本新增的特性,舊的項目需要升級element版本(注意升級可能導致其他頁面的無措,謹慎升級)

  鏈接  https://element.eleme.cn/2.12/#/zh-CN/component/infiniteScroll

<template>
  <ul class="infinite-list" v-infinite-scroll="load" style="overflow:auto">
    <li v-for="i in count" class="infinite-list-item">{{ i }}</li>
  </ul>
</template>

<script>
  export default {
    data () {
      return {
        count: 0
      }
    },
    methods: {
      load () {
        this.count += 2
      }
    }
  }
</script>

 

2vue-infinite-scroll(官網https://github.com/ElemeFE/vue-infinite-scroll)只適合vue2

  步驟 npm install vue-infinite-scroll --save

                2  import infiniteScroll from 'vue-infinite-scroll'

 Vue.use(infiniteScroll)
 使用示例,此處只寫相關代碼
  <div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10">
       <div v-for="item in data" :key="item.index">{{item.name}}</div>
   </div>

  

data () {
    return {
      count: 0,
      data: [],
      busy: false
    }
  }
methods: {
    loadMore: function() {
      this.busy = true
      setTimeout(() => {
        for (var i = 0, j = 10; i < j; i++) {
          this.data.push({name: this.count++ })
        }
        console.log(this.data)
        this.busy = false
      }, 1000)
    }
  }

  效果  默認會載入10行數據,只要往下滾動到頁面底部,就會在1秒后再次加載10條,然后繼續滾動,又會加載10條,實際情況到一定程度停止刷新

  參數解釋

      v-infinite-scroll="loadMore"表示回調函數是loadMore
     infinite-scroll-disabled="busy"表示由變量busy決定是否執行loadMorefalse則執行loadMoretrue則不執行,看清楚,busy表示繁忙,繁忙的時候是不執行的。
     infinite-scroll-distance="10"這里10決定了頁面滾動到離頁尾多少像素的時候觸發回調函數,10是像素值。通常我們會在頁尾做一個幾十像素高的“正在加載中...”,這樣的話,可以把這個div的高度設為infinite-scroll-distance的值即可。

      infinite-scroll-immediate-check 默認值為true,該指令意思是,應該在綁定后立即檢查busy的值和是否滾動到底。如果你的初始內容高度不夠高、不足以填滿可滾動的容器的話,你應設為true,這樣會立即執行一次loadMore,會幫你填充一些初始內容。
      infinite-scroll-listen-for-event 當事件在Vue實例中發出時,無限滾動將再次檢查。
      infinite-scroll-throttle-delay 檢查busy的值的時間間隔,默認值是200,因為vue-infinite-scroll的基礎原理就是,vue-infinite-scroll會循環檢查busy的值,以及是否滾動到底,只有當:busy為false且滾動到底,回調函數才會執行


  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM