微信小程序实例代码中关于上拉加载更多的实现方式

why 194 2024-08-05

本篇文章给大家带来的内容是关于微信小程序实例代码:上拉加载更多的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

微信小程序实例代码中关于上拉加载更多的实现方式

一、代码环境

一开始用的是scroll-view组件,但是真机运用的时候发现上拉加载更多的时候,数据有跳动,对用户交互及其不友好,所以决定修改上拉加载更多的效果

我用的是wepy框架,参照多个网上文档,也参照官方文档主要用的是onReachBottom()事件

二、代码

视图层:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<repeat for="{{recordList}}" key="index" index="index" item="item" >

   <view class="zan-panel">

      <view class="zan-cell">

         <view class="zan-cell__bd">变更内容:{{item.typeText}}</view>

         <view class="zan-cell__ft">¥<text style="padding-left:4rpx">{{item.totalFee/100}}</text></view>

      </view>

      <view class="zan-cell">

         <view class="zan-cell__bd zan-font-12 zan-c-gray-dark">变更时间:{{item.updateTime}}</view>

      </view>

   </view>

</repeat>

<block wx:if="{{recordList.length > pageSize}}">

   <block wx:if="{{updateLoadShow}}">

      <updateLoad :loading="updateLoadShow"></updateLoad>

   </block>

   <view class="doc-description zan-center" style="font-size:12px;" wx:else>

      <text>{{updateLoadTxt}}</text>

   </view>

</block>

说明:如果数据不超过一屏,向上拉回无法触发onReachBottom()事件,所以我做的处理是 “ (当前屏幕高度 实际一个列表循环高度 )+1”,保证数据能超过一屏。

1

2

3

4

5

6

7

8

9

10

onLoad() {

    // 获取系统消息

    wepy.getSystemInfo({

      success: (res) => {

        this.height = res.windowHeight

        this.pageSize = Math.round(res.windowHeight / 103) + 1

        this.$apply()

      }

    })

}

逻辑层写:

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

// 上拉加载

onReachBottom() {

    // 上拉加载更多loading

    this.updateLoadShow = true

    let _length = this.recordList.length

    // 列表长度与列表总数对比

    if (_length === this.pagtotal) {

      setTimeout(() => {

        this.updateLoadShow = false

        this.$apply()

      }, 1000)

    } else {

      // 当前页码加一

      this.pageNum++

      // 更新数据

      this.getData()

    }

}

// 获取数据

getData() {

    const pageNum = this.pageNum

    api.get(recordURL + &#39;queryBalanceSub?start=&#39; + pageNum + &#39;&size=&#39; + this.pageSize + &#39;&sortStr=update_time&sortType=desc&#39;).then(({data}) => {

      if (pageNum === 1) {

        this.recordList = data.list

        this.pagtotal = data.totalRow

      } else {

        this.recordList = this.recordList.concat(data.list)

      }

      this.loadingShow = false

      this.updateLoadShow = false

      this.$apply()

    })

  }


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:揭秘自提小程序的开发之旅
下一篇:微信小程序里数据绑定的实例剖析及相关代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~