• 微信小程序 如何在组件中实现 上拉加载下一页和下拉触底


    通过在父页面中使用selectComponent来调用子组件的方法来实现

    1、在component中配置好方法

    子页面homePage/index/index.js
    // homePage/index/index.js
    var total = 0
    var pageNo = 1
    const pageSize = 20
    Component({
      /**
       * 组件的属性列表
       */
      properties: {},
      lifetimes: {
        created: function () {
        },
        attached: function () {
          setTimeout(() => {
            this.getProfessorQuestionList('fresh')
          }, 0)
        },
      },
    
      /**
       * 组件的初始数据
       */
      data: {
        questionList:[]
      },
    
      /**
       * 组件的方法列表
       */
      methods: {
        loadData(action) {
          if (action == 'fresh') {
            pageNo = 1
          }
          if (action == 'more') {
            if (pageNo * pageSize < total) {
              pageNo++
              this.getProfessorQuestionList('more')
            }
          } else {
            this.getProfessorQuestionList('fresh')
          }
        },
        getProfessorQuestionList(type) {
          wx.showLoading({
            title: '加载中',
            mask: true
          })
          httpUtils.post({
            url: url,
            data: {
              page: pageNo,
              pageSize: pageSize,
            }
          }).then(res => {
            wx.hideLoading()
            total = res.page.total;
            let questionList = stringUtils.isNull(res.list) ? [] : res.list;
            if (type == 'fresh') {
              this.setData({
                questionList: questionList
              })
            } else {
              this.setData({
                questionList: this.data.questionList.concat(questionList)
              })
            }
          }).finally(() => {
            wx.hideLoading()
             this.setData({
              noData:this.data.questionList.length? true:false
            })
          })
        },
      }
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77

    2、在父页面使用selectComponent来调用子组件的方法

    父页面page/index/index.json
    {
      "usingComponents": {
        "homePage": "../../homePage/index/index",
      },
      "navigationStyle": "custom"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    父页面page/index/index.wxml
     <homePage id="homePage" />
    
    • 1
    父页面page/index/index.js
    Page({
      data: {
        homePage: ''
      },
    
      onReady() {
        this.setData({
          homePage: this.selectComponent("#homePage"),
        })
      },
      /**
       * 页面相关事件处理函数--监听用户下拉动作
       */
      onPullDownRefresh() {
        this.data.homePage.loadData('fresh')
      },
    
      /**
       * 页面上拉触底事件的处理函数
       */
      onReachBottom() {
        this.data.homePage.loadData('more')
      },
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    【LeetCode每日一题】——78.子集
    几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)
    敏捷项目管理解锁:2023年使用YouTrack的全面指南
    快速构建代理应对
    磐基2.0部署apisix集群
    报错 | RegExp2 is not defined
    关于ip地址的网页无法访问navigator的gpu、媒体、蓝牙等设备的解决方法
    计算机的发展史,让你想到了什么?
    【JDK 8-集合框架进阶】6.3 foreach
    np.concatenate、numpy.append
  • 原文地址:https://blog.csdn.net/m0_45857808/article/details/138067871