小程序上拉加載更多實現技巧及注意事項

一、選取適當的加載標誌

實現上拉加載更多首先要選擇合適的標誌來指示用戶,一個好的標誌可以增加用戶的體驗。常見的標誌方式包括:文字提示、loading圖標、骨架屏等,而且這些方式可以組合使用,比如同時使用loading圖標和文字提示。

代碼示例:

// wxml

  
    加載更多
    加載中
  
  
    沒有更多了
  


// wxss
.load-more {
  display: block;
  margin-top: 20rpx;
  text-align: center;
}
.loading-box {
  display: flex;
  justify-content: center;
  flex-direction: row;
}
.loading-text {
  font-size: 34rpx;
  color: #999;
  margin-right: 10rpx;
}
.loading-img {
  animation: rotation 1.5s linear infinite;
  height: 36rpx;
  width: 36rpx;
}

.no-more__text {
  font-size: 34rpx;
  margin-top: 40rpx;
  color: #999;
}

二、使用scroll-view組件

scroll-view是小程序自帶的可滾動視圖容器組件,可以讓我們實現上下左右滑動的效果。使用scroll-view組件時,需要注意的是設置scrollView的高度和觸發 scrolltolower 事件的閾值。因為scroll-view默認高度為200px,因此我們可能需要手動設置高度。

代碼示例:

// wxml

  


// wxss
.scroll-view {
  height: 100%;
}

三、優化列表渲染

當加載更多時,需要新增數據進行渲染,這將導致重新渲染整個列表,而且當數據量龐大時會導致卡頓。解決這個問題的最常見方法是分批次加載數據,比如一次只加載10條,當用戶拉到底部時再繼續加載10條數據。此外,可以使用小程序官方提供的wx:key屬性,讓列表渲染時有一個唯一的標識,這樣可以避免出現重複渲染的情況。

代碼示例:

// wxml

  
    
  


// js
Page({
  data: {
    list: [], // 列表數據
    pageNum: 1, // 當前請求的頁碼
    limit: 10, // 每頁請求的條數
    isLoading: false, // 是否正在加載
    isEnd: false // 是否沒有更多數據了
  },
  onReachBottom: function() {
    // 已經全部加載完畢
    if (this.data.isEnd) return

    // 正在加載中
    if (this.data.isLoading) return

    // 開始加載
    this.setData({
      isLoading: true
    })
    this.loadData()
  },
  loadData(pageNum) {
    // 發起請求
    wx.request({
      url: 'xxxxxxx',
      data: {
        pageNum,
        limit: this.data.limit
      },
      success: (res) => {
        const {data} = res.data;
        let list = [];
        if(this.pageNum == 1) {
          list = data;
        } else {
          list = this.data.list.concat(data);
        }
        this.setData({
           list,
           pageNum: pageNum +1,
           isLoading: false,
           isEnd: data.length  {
        wx.showToast({
          title: '數據獲取失敗',
          icon: 'none',
          duration: 1500
        });
      }
    });
  }
})

四、注意事項

上拉加載更多要注意以下幾點:

1、保持UI友好:當沒有更多數據時應該給出明確的提示,這樣用戶不會一直拉動列表卻發現沒有新數據。

2、避免濫用loading:一個好的用戶體驗應該是迅速地獲得想要的內容,而不是一直等待loading。

3、節流與防抖:在觸發scrolltolower事件的時候,可能會出現用戶希望連續加載的情況,此時可以通過節流或防抖的方式來延遲函數的觸發。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 14:18
下一篇 2024-12-29 14:18

相關推薦

  • QML 動態加載實踐

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

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

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

    編程 2025-04-29
  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • int類型變量的細節與注意事項

    本文將從 int 類型變量的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變量進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變量。 一、定義與聲明 int…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發佈程序以及命令行。在本文中…

    編程 2025-04-29

發表回復

登錄後才能評論