如今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
步驟 1 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決定是否執行loadMore,false則執行loadMore,true則不執行,看清楚,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且滾動到底,回呼函式才會執行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/181620.html
標籤:JavaScript
上一篇:ES5_物件 與 繼承
下一篇:事件驅動及事件處理
