欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

小程序的下拉刷新和觸底追加內(nèi)容 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

小程序的下拉刷新和觸底追加內(nèi)容

發(fā)表時間:2021-1-5

發(fā)布人:葵宇科技

瀏覽次數(shù):76

本方法是利用頁面事件處理函數(shù)的 onPullDownRefreshonReachBottom 方法實現(xiàn)小程序的下拉刷新和觸底追加內(nèi)容。

前提條件:

需要在app.json的window選項中或頁面配置中開啟enablePullDownRefresh。

屬性類型描述
enablePullDownRefreshBoolean是否開啟下拉刷新,詳見頁面相關事件處理函數(shù)。
// 這里是index.json                           這里我選擇在頁面配置中開啟,請?zhí)砑右韵抡Z句 
{  "enablePullDownRefresh": true}
復制代碼

了解2個函數(shù):

方法類型描述
onPullDownRefresh()function頁面相關事件處理函數(shù)——監(jiān)聽用戶下拉動作
當處理完數(shù)據(jù)刷新后,wx.stopPullDownRefresh可以停止當前頁面的下拉刷新
onReachBottom()function頁面上拉觸發(fā)底事件的處理函數(shù)
可以在app.json的window選項中或頁面配置中設置觸發(fā)距離onReachBottomDistance

讓我們看看它到底是什么樣子,相信你已經(jīng)知道他們是如何觸發(fā)的吧

理一下思路:

    要實現(xiàn)這個功能,先要知道在小程序開發(fā)中,頁面中的內(nèi)容是由數(shù)據(jù)驅(qū)動的,所以·····
復制代碼

一、數(shù)據(jù)

  1. 你可以自己在Page({ 模擬數(shù)據(jù) })

  2. 云開發(fā)=>數(shù)據(jù)庫=>創(chuàng)建一個新的集合 =>添加記錄=>愛添加什么鍵值對都可以

  3. 用接口去取得數(shù)據(jù)(這里先不具體說明)

    
    

二、頁面

就像上面說的那樣,數(shù)據(jù)驅(qū)動頁面,讓我們看看頁面中的是什么樣子的吧

// 這里是 index.wxml// 這里有些陌生的標簽,不要緊,我只是引入了vant weapp而已,
// 你用任何你喜歡的html標簽都可以實現(xiàn)
<van-cell-group>
  <block wx:for="{{tasks}}" wx:key="index">
    <navigator url="../todoInfo/todoInfo?id={{item._id}}">      
      <van-cell title="{{item.title}}" />    
    </navigator>  
  </block>
</van-cell-group>
復制代碼
// 這里是 index.js

const db = wx.cloud.database()              // 創(chuàng)建一個database實例 
const todos = db.collection("todos")        // 取得數(shù)據(jù)庫中名為 "todos" 的集合

Page({  
  /*頁面的初始數(shù)據(jù)*/  
  data: {    
    tasks: [],    
    skip: 0  
  },
})
復制代碼

復制代碼 看到這里是不是有了疑問?

tasks是一個[ ] ,而它是空的,是如何變成下圖中的樣子?

skip 又是什么?

我們?nèi)〉玫膖odos,為什么還沒有出現(xiàn)?它本質(zhì)上它是一個對象 {} 只是這個花括號里有許多我們?nèi)M去的key 和 value

記住他們,我將接著和你解釋。

看 ! 并沒有什么復雜的東西 只是通過 wx:for"{{tasks}}" 
循環(huán)遍歷tasks并渲染到<van-cell  title="{{item.title}}"/ >而已。
它一條一條的出現(xiàn)在視圖中了。
復制代碼

如果你對Vue或者小程序有一些了解,那么你將看得懂這段代碼在說一件什么事。

三、探究如何實現(xiàn)?

下拉刷新和觸底追加內(nèi)容

// 這里是index.js 
const db = wx.cloud.database()       // 創(chuàng)建一個database實例 
const todos = db.collection("todos") // 取得數(shù)據(jù)庫中名為 "todos" 的集合

Page({
    /*頁面的初始數(shù)據(jù)*/
  data: {                       // 一堆的代碼對于任何人來說都感到頭痛,所以跟著我注釋看吧~
    tasks: [],
    skip: 0
  },
  /****頁面相關事件處理函數(shù)--監(jiān)聽用戶下拉動作****/
  onPullDownRefresh: function () {
    this.getData(res => {       // 這里只是調(diào)用了一個方法而已 接著注釋往下看它是什么
      wx.stopPullDownRefresh()
      //將skip和tasks重置到初始狀態(tài)。
      this.data.skip = 0
      this.data.tasks = []
    })
  },

  /****頁面上拉觸底事件的處理函數(shù)****/
  onReachBottom: function () {  // 這里只是調(diào)用了一個方法而已 接著注釋往下看它是什么
    // 顯示加載圖標
    console.log("到底了")
    this.getData(res => {})
  },
  
  /***********************getData是我自定義的函數(shù)***********************/
  getData: function (callback) {
    if (!callback) {
      callback = res => {}
    }
    wx.showLoading({
      title: '正在努力加載···',
    })
    
  // 這里以下才是重要的部分// 注意todos我們之前已經(jīng)得到它了
  
  // 下面這串代碼告訴我們,取得todos中的數(shù)據(jù),每次它都會跳過this.data.skip條,每次都將數(shù)據(jù)通過
  setData(),把tasks的值修改為 oldData和res.data拼接后的值。成功后將this.data.skip+20。
  // 隨后你再看上面的代碼 他們都是在觸發(fā)條件的時候執(zhí)行了getData而已,再順帶附加了進行了一
  些其他的操作

    todos.skip(this.data.skip).get().then(res => {
      // 用skip方法跳過已加載的部分 第一次跳過 0 條
      let oldData = http://www.wxapp-union.com/this.data.tasks
      this.setData({
        // 將跳過的數(shù)據(jù) 和 新加載 的拼接成新數(shù)據(jù)并渲染頁面 
        tasks: oldData.concat(res.data)
      }, res => {
        // 每次加20 則上面的skip每次就跳過 前20條
        this.data.skip += 20
        wx.hideLoading({
          success: (res) => {},
        })
        callback()
      })
    })
  },
復制代碼

起始渲染20條,是小程序約定的公共值

到底追加了12條,因為todos里一共只有32條


總結一下

  1. 就是通過skip()方法,跳過已加載過的數(shù)據(jù),

  2. 每次觸底都將已加載的數(shù)據(jù)和接下來要加載的數(shù)據(jù)進行拼接,并賦值給要渲染的data。

  3. 每次刷新再重置data并重新加載頁面。


作者:raotao
鏈接:https://juejin.im/post/6880536175501803527
來源:掘金
著作權歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處。

相關案例查看更多