使用Vant上拉加載實現無限列表

一、Vant上拉加載更多

1、vant的上拉加載更多組件可以快速的創建一個帶有加載狀態的無限列表。只需要使用一個v-for指令渲染列表。使用步驟如下:

// HTML代碼

  
    
  


// script代碼
export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      finished: false
    };
  },
  onLoad() {
    this.page++;
    setTimeout(() => {
      this.getData();
    }, 1000);
  },
  getData() {
    fetch(`/api/data?page=${this.page}&pageSize=${this.pageSize}`).then(res => {
      return res.json();
    }).then(result => {
      this.list.push(...result.data);
      this.finished = (this.list.length >= result.totalCount);
    });
  }
}

2、在代碼中,我們使用van-list組件來渲染列表,接着在data選項里添加page、pageSize和finished三個變量;onLoad函數用來加載更多數據,getData函數從後端請求數據,並且在返回結果後將數據添加到list數組中。當list數組長度等於或者大於後端返回結果的totalCount時,則將finished設為true,表示加載完畢。

二、Vant上拉加載下拉刷新怎麼用

1、除了上拉加載更多,vant還為我們提供了下拉刷新組件,使用起來也非常簡單直觀。只需要使用van-pull-refresh組件,代碼如下:

// HTML代碼

  
    
  


// script代碼
export default {
  data() {
    return {
      list: [],
      loading: false
    };
  },
  onRefresh() {
    setTimeout(() => {
      this.getData();
      this.loading = false;
    }, 1000);
  },
  getData() {
    fetch(`/api/data?page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  }
}

2、在代碼中,我們使用van-pull-refresh組件包裹van-list組件。當下拉刷新觸發時,會調用onRefresh函數,先設置loading為true,然後從後端請求數據,並且在返回結果後將數據設置到list數組中。在代碼中,我們使用setTimeout函數模擬後端請求數據的耗時。

三、Vant上拉加載下拉防抖查詢

1、在實際使用中,我們可能需要下拉刷新時發起一次數據查詢請求,或者在用戶輸入搜索關鍵字時發起一次查詢請求。為了避免頻繁的請求,我們可以使用防抖或者節流函數。

2、比如在下拉刷新時發起數據查詢請求時,我們可以使用lodash庫提供的防抖函數_.debounce,代碼如下:

// HTML代碼

  
  
    
  


// script代碼
import { debounce } from 'lodash';

export default {
  data() {
    return {
      list: [],
      query: '',
      loading: false,
      search: debounce(this.onSearch, 500)
    };
  },
  onRefresh() {
    setTimeout(() => {
      this.getData();
      this.loading = false;
    }, 1000);
  },
  onSearch() {
    fetch(`/api/data?q=${this.query}&page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  },
  getData() {
    fetch(`/api/data?page=1&pageSize=10`).then(res => {
      return res.json();
    }).then(result => {
      this.list = result.data;
    });
  }
}

3、在代碼中我們使用了lodash庫的debounce函數,在data選項里結合onSearch函數創建了search變量。當用戶在搜索框輸入時會調用search變量,從而防抖調用onSearch函數。在onSearch函數中,我們從後端請求數據,並且在返回結果後將數據設置到list數組中。

四、Uniapp上拉加載更多

1、如果你在uniapp中使用vant,則需要注意的是,由於uniapp是跨平台開發框架,不能直接使用瀏覽器的window對象獲取頁面高度或者滾動距離。所以需要使用uni-app提供的api來實現上拉加載更多,代碼如下:

// HTML代碼

  
    
  


// script代碼
export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      finished: false
    };
  },
  onLoad() {
    this.page++;
    uni.request({
      url: `/api/data?page=${this.page}&pageSize=${this.pageSize}`,
      success: (res) => {
        let result = res.data;
        this.list.push(...result.data);
        this.finished = (this.list.length >= result.totalCount);
      }
    });
  }
}

2、在代碼中,我們使用uniapp提供的api實現上拉加載更多。在data選項里添加page、pageSize和finished三個變量,在onLoad方法中使用uni.request方法發送請求,從後端獲取數據,並且將數據添加到list數組中。當list數組長度等於或者大於後端返回結果的totalCount時,將finished設為true表示加載完畢。

五、VueVant下拉加載

1、如果你使用Vue和Vant來實現下拉加載,那麼可以使用better-scroll庫提供的下拉刷新和上拉加載更多插件。具體使用方法如下:

// HTML代碼

加載中...

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187050.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:34

相關推薦

  • QML 動態加載實踐

    探討 QML 框架下動態加載實現的方法和技巧。 一、實現動態加載的方法 QML 支持從 JavaScript 中動態指定需要加載的 QML 組件,並放置到運行時指定的位置。這種技術…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python中不同類型的列表

    Python是一種功能強大的編程語言,其內置數據結構之一為列表。列表可以容納任意數量的元素,並且可以存儲不同類型的數據。 一、列表的基本操作 Python的列表類型支持許多操作,如…

    編程 2025-04-29
  • Python為什麼輸出空列表

    空列表是Python編程中常見的數據類型,在某些情況下,會出現輸出空列表的情況。下面我們就從多個方面為大家詳細闡述為什麼Python會輸出空列表。 一、賦值錯誤 在Python中,…

    編程 2025-04-29
  • Vant ContactList 增加屬性的實現方法

    在使用前端UI框架Vant中的ContactList組件時,我們有時需要為此組件增加一些個性化的屬性,來滿足我們特定的需求。那麼,如何實現ContactList組件的增加屬性功能呢…

    編程 2025-04-29
  • Python定義兩個列表的多面探索

    Python是一種強大的編程語言,開放源代碼,易於學習和使用。通過Python語言,我們可以定義各種數據類型,如列表(list)。在Python中,列表(list)在處理數據方面起…

    編程 2025-04-29
  • Python編程實現列表元素逆序存放

    本文將從以下幾個方面對Python編程實現列表元素逆序存放做詳細闡述: 一、實現思路 一般來說,使用Python將列表元素逆序存放可以通過以下幾個步驟實現: 1. 定義一個列表 2…

    編程 2025-04-29
  • Python列表的讀寫操作

    本文將針對Python列表的讀取與寫入操作進行詳細的闡述,包括列表的基本操作、列表的增刪改查、列表切片、列表排序、列表反轉、列表拼接、列表複製等操作。 一、列表的基本操作 列表是P…

    編程 2025-04-29
  • Python字典列表去重

    這篇文章將介紹如何使用Python對字典列表進行去重操作,並且從多個方面進行詳細的闡述。 一、基本操作 首先我們需要了解Python字典列表去重的基本操作。Python中提供了一種…

    編程 2025-04-28

發表回復

登錄後才能評論