欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序?qū)崿F(xiàn)觸底加載與下拉刷新的示例代碼

 更新時間:2022年05月27日 08:33:09   作者:豬痞惡霸  
本文主要介紹了微信小程序?qū)崿F(xiàn)觸底加載與下拉刷新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在最近做小程序的時候有這么一個很常見的需求,加載一個信息列表,要求需要觸底加載和下拉刷新,我突然想起來掘金小冊界面和這個需求很相似,接下來我給大家介紹一下我的實現(xiàn)方案。

觸底加載

步驟如下:

  • 封裝一個loader函數(shù)
  • 在監(jiān)聽頁面加載的時候觸發(fā)這個loader函數(shù)
  • 在監(jiān)聽到觸底的時候再次觸發(fā)這個函數(shù)
onLoad: function (options) {
    this.loadBooks(this.data.books.length)
},
onReachBottom: function () {
    this.loadBooks(this.data.books.length)
},
loadBooks: function () {
    
},

注意這里的生命周期函數(shù):onload為監(jiān)聽頁面加載生命周期,onReachBottom為監(jiān)聽觸底動作生命周期。

loader函數(shù)思考

loader函數(shù)的封裝首先取決與我們的業(yè)務邏輯,首先根據(jù)我們的業(yè)務來思考,

我們想要通過觸底來獲取數(shù)據(jù),所以我們需要固定住我們每次獲取數(shù)據(jù)的數(shù)量,其次,為了避免重復,我們不能重復獲取,就要考慮從為獲取的數(shù)據(jù)項開始獲取,下面實現(xiàn)過程中的skip(n)是必要的,即傳進來的參數(shù)為從第n項開始,我們在監(jiān)聽和觸底傳參都為當下數(shù)組的長度,因為當頁面剛加載的時候數(shù)組長度為0,當觸底的時候,數(shù)組長度恰為當前已經(jīng)獲取的數(shù)據(jù)項,所以之后就可以獲取未獲得的數(shù)據(jù)并于之前的數(shù)組合并。

loader函數(shù)實現(xiàn)

其實loader函數(shù)的實現(xiàn)才是觸底加載功能的核心,正常情況下觸底加載的邏輯是通過觸底累加一個數(shù)字代表頁碼數(shù),然后將頁碼數(shù)發(fā)送給服務端,服務端再將信息數(shù)組返回,我使用的是云開發(fā),所以解決方案有所不同。

  • 調(diào)用wx云開發(fā)的api,skip(n)從集合的第n項開始獲取 limit(n)獲取至多n個元素。
  • 通過get獲取相應數(shù)據(jù),這里為n項后6個數(shù)據(jù)。
  • 通過cancat()實現(xiàn)數(shù)組的合并

需要注意的是這里的limit(n)直接使用是有20的長度限制,如果有剛需,需要獲取20個以上的數(shù)據(jù)集合,那么我們可以在云函數(shù)中去解決。

loadBooks: function (n) {
        wx.cloud.database().collection('books').skip(n).limit(6).get().then(res => {
            console.log(res.data)
            this.setData({
                books: this.data.books.concat(res.data)
            })
        })
    },

觸底加載動畫

關于觸底加載動畫,我是在codepen參考的,只需要在觸底的時候,將控制動畫元素的變量更改,在數(shù)據(jù)獲取成功的時候再改變即可,加載動畫代碼如下。

<view class="loader" wx:if="{{isLoader}}">
    <view class="dot"></view>
    <view class="dot"></view>
    <view class="dot"></view>
    <view class="dot"></view>
    <view class="dot"></view>
</view>
.dot {
    width: 24rpx;
    height: 24rpx;
    background: #3ac;
    border-radius: 100%;
    display: inline-block;
    animation: slide 1s infinite;
}

.dot:nth-child(n) {
    animation-delay: 0.1s;
    background: #6cd793;
}

@keyframes slide {
    0% {
        transform: scale(1);
    }
    50% {
        opacity: .3;
        transform: scale(2);
    }
    100% {
        transform: scale(1);
    }
}

觸底加載的優(yōu)點

在小程序中如果數(shù)據(jù)量過大,一次性獲取會加重dom渲染的負擔,不僅如此,響應的速度也會如龜速一樣,所以為了用戶的體驗,良好的響應式交互是必要的,通過觸底交互,按量加載數(shù)據(jù),如下,我每次觸底會加載八份數(shù)據(jù),然后直到所有數(shù)據(jù)加載完畢,為空。

下拉刷新

小程序下拉刷新頁面實現(xiàn)還是很容易的

  • 在相應頁面的同級json文件中配置一下enablePullDownRefresh使其為true,這里是開啟對應頁面的下拉刷新設置

    {
      "usingComponents": {},
      "enablePullDownRefresh": true,
    }
  • 使用onPullDownRefresh監(jiān)聽用戶下拉動作

    onPullDownRefresh: function () {},
  • 調(diào)用wx的加載api

    onPullDownRefresh: function () {
            console.log(1)
            //在標題欄中顯示加載
            wx.showNavigationBarLoading() 
            wx.showLoading({
                title: '刷新中...',
            })
            wx.cloud.database().collection('books').skip(0).limit(6).get().then(res => {
                this.setData({
                    books: res.data
                })
                wx.hideLoading();
                //隱藏導航條加載動畫
                wx.hideNavigationBarLoading();
                //停止下拉刷新
                wx.stopPullDownRefresh();
            })
        },

    具體api相關介紹如下:

    • wx.showNavigationBarLoading()在導航條進行顯示加載動畫
    • wx.hideNavigationBarLoading()隱藏導航條加載動畫
    • wx.stopPullDownRefresh()停止下拉刷新

最后

到此這篇關于微信小程序?qū)崿F(xiàn)觸底加載與下拉刷新的示例代碼的文章就介紹到這了,更多相關小程序觸底加載與下拉刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 用js實現(xiàn)放大鏡的效果的簡單實例

    用js實現(xiàn)放大鏡的效果的簡單實例

    下面小編就為大家?guī)硪黄胘s實現(xiàn)放大鏡的效果的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • npm淘寶鏡像修改講解

    npm淘寶鏡像修改講解

    這篇文章主要介紹了npm淘寶鏡像修改講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Javascript實現(xiàn)可旋轉(zhuǎn)的圓圈實例代碼

    Javascript實現(xiàn)可旋轉(zhuǎn)的圓圈實例代碼

    這篇文章主要介紹了Javascript實現(xiàn)可旋轉(zhuǎn)的圓圈實例代碼,可實現(xiàn)圓圈的旋轉(zhuǎn)與運動效果,涉及javascript動態(tài)操作頁面元素屬性及進行相應數(shù)學運算的技巧,需要的朋友可以參考下
    2015-08-08
  • 學習JavaScript中的閉包closure應該注意什么

    學習JavaScript中的閉包closure應該注意什么

    這篇文章主要介紹了學習JavaScript中的閉包closure應該注意什么?在?JavaScript?中,?每當創(chuàng)建一個函數(shù),?閉包就會在函數(shù)創(chuàng)建的同時被創(chuàng)建出來,但是學習的時候我們應該注意哪些問題呢,帶著疑問一起進入下面文章學習具體內(nèi)容吧
    2022-06-06
  • 深入理解JavaScript的事件執(zhí)行機制

    深入理解JavaScript的事件執(zhí)行機制

    本文主要介紹了JavaScript的事件執(zhí)行機制,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 為指定元素增加樣式的js代碼

    為指定元素增加樣式的js代碼

    從此例子中發(fā)現(xiàn),js對"" 與 " " ,注意中間還有一空格,解析是非常嚴格的。在java與net中還有待于研究。
    2009-12-12
  • 超強的IE背景圖片閃爍(抖動)的解決辦法

    超強的IE背景圖片閃爍(抖動)的解決辦法

    超強的IE背景圖片閃爍(抖動)的解決辦法...
    2007-09-09
  • 微信小程序?qū)崿F(xiàn)自定義動畫彈框/提示框的方法實例

    微信小程序?qū)崿F(xiàn)自定義動畫彈框/提示框的方法實例

    這篇文章主要給大家介紹了關于微信小程序?qū)崿F(xiàn)自定義動畫彈框/提示框的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Javascript(es2016) import和require用法和區(qū)別詳解

    Javascript(es2016) import和require用法和區(qū)別詳解

    本篇文章主要介紹了Javascript(es2016) import和require用法和區(qū)別詳解,具有一定的參考價值,有興趣的可以了解下
    2017-08-08
  • js實現(xiàn)的光標位置工具函數(shù)示例

    js實現(xiàn)的光標位置工具函數(shù)示例

    這篇文章主要介紹了js實現(xiàn)的光標位置工具函數(shù),結(jié)合實例形式分析了JavaScript操作textarea文本框光標位置及文本操作相關技巧,需要的朋友可以參考下
    2016-10-10

最新評論