搜尋
首頁微信小程式小程式開發淺談小程式中下拉刷新和上拉載入功能怎麼實現? (附代碼)

淺談小程式中下拉刷新和上拉載入功能怎麼實現? (附代碼)

Oct 26, 2021 am 10:49 AM
上拉加載下拉重新整理小程式

本篇文章為大家介紹一下小程式中實作下拉刷新和上拉載入功能的方法,希望對大家有幫助!

淺談小程式中下拉刷新和上拉載入功能怎麼實現? (附代碼)

在進行清單資料展示的時候,如果資料比較多或更新比較快,就需要提供上拉刷新和下拉載入的功能,讓提升使用者的體驗。 【相關學習推薦:小程式開發教學

下拉刷新及上拉載入wxml檔

當我們使用scroll-view滑動當元件展示清單時,其本身就存在下拉刷新和上拉加載的觸發函數

<scroll-view class="scroll" scroll-y="{{true}}" upper-threshold="50"   
bindscrolltoupper="refresh"  style="height:700px">
  <l-loadmore show="{{upfresh}}" bindscrolltolower="getMore"  type="loading" loading-text="拼命刷新中">
</l-loadmore>

<l-loadmore show="{{downfresh}}" type="loading" loading-text="拼命加载中">
</l-loadmore>
  • scroll-y: 是否允許縱向滾動,預設為false,這裡我們設定為true
  • #upper-threshold: 距頂部/左邊多遠時,觸發scrolltoupper 事件(下拉刷新)
  • bindscrolltoupper:滾動到頂部/左邊時觸發,這裡設置滾動到頂部需要觸發的函數
  • bindscrolltolower:滾動到頂部/右邊時觸發

#引入line-ui框架

這裡我使用的下拉刷新和上拉加載展示組件是lin-ui框架提供的,這裡我說下如何引入lin-ui框架:

lin-ui官方文檔地址

//在小程序项目目录中执行下面的函数
npm install lin-ui

然後在需要引入元件的頁面的json檔案中進行引入

"usingComponents": {
    "l-loadmore":"/miniprogram_npm/lin-ui/loadmore/index",
    "l-loading":"/miniprogram_npm/lin-ui/loading/index",
  },

這樣lin-ui元件就引入成功了

js程式碼編寫

data: {
    downfresh:false,//底部加载展示控制
    upfresh:false//顶部加载展示控制
  },

首先在data中設定載入元件是否顯示,預設都不顯示

下拉刷新js程式碼

//下拉刷新
refresh(){
    if(this.data.upfresh){
      console.log("还没刷新完成")
      return;
    }
    var that = this;
    this.setData({
      upfresh: true,
      // upfresh:false
    })
   
    setTimeout(function() {
      //updateData为自己的数据更新逻辑代码
      that.updateData(true,()=>{
        that.setData({
          upfresh: false,
      });
     })
      // wx.hideLoading();
    console.info(&#39;下拉刷新加载完成.&#39;);
  }, 500);
  },
    
      //更新数据
   updateData:function(tail, callback) {
  
    var that = this;
    console.log("updatedata-=-=seea"+that.data.searchValue)
    wx.request({
      url: app.gBaseUrl + &#39;compony-detail/page&#39;,
      method: &#39;GET&#39;,
      data: {
        page: 0,
        count: 20,
        componyname:that.data.searchValue
      },
      success: (res) => {
        this.setData({
          componys: res.data
        })
        if (callback) {
          callback();
        }
      }
    })
   },

上拉載入js程式碼

 /**
   * 滑动到底部加载更多
   */
  getMore(){
    // downloadingData=this.data.downloadingData
    if(this.data.downfresh){
      console.log("还没加载完成")
      return;
    }
   var that = this;
    this.setData({
      downfresh: true,
      // upfresh:false
    })
   
    this.setData({
      downloadingData: true
      // upfresh:false
    })

    setTimeout(function() {
      that.loadData(true,()=>{
        that.setData({
        downfresh: false
      });
     })
      // wx.hideLoading();
    console.info(&#39;上拉数据加载完成.&#39;);
  }, 1000);
  },
    
      loadData: function(tail, callback) {
    var that = this;
    wx.request({
      url: app.gBaseUrl + &#39;compony-detail/page&#39;,
      method: &#39;GET&#39;,
      data: {
        page: that.data.componys.length,
        count: 20,
        componyname:that.data.searchValue
      },
      success: (res) => {
        // console.log(JSON.stringify(res.data))
        that.setData({
          componys: that.data.componys.concat(res.data),
        });
        if (callback) {
          callback();
        }
      }
    })
  },

整個下拉刷新和上拉加載的功能我們就已經實現了,主要就是利用到了scroll-view的組件特性,根據觸發的時機來控制記載組件的顯隱,整體實現並不是很難,具體程式碼可根據自己的實際情況做適當調整哦。

更多程式相關知識,請造訪:程式設計影片! !

以上是淺談小程式中下拉刷新和上拉載入功能怎麼實現? (附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金社区。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)