您的位置:

小程序上拉加载更多实现技巧及注意事项

一、选取适当的加载标志

实现上拉加载更多首先要选择合适的标志来指示用户,一个好的标志可以增加用户的体验。常见的标志方式包括:文字提示、loading图标、骨架屏等,而且这些方式可以组合使用,比如同时使用loading图标和文字提示。

代码示例:

// wxml

  
   
    
    加载更多
    
    
    
     加载中
     
     
    
  
   
  
   
    
    没有更多了
    
  
   

  

// wxss
.load-more {
  display: block;
  margin-top: 20rpx;
  text-align: center;
}
.loading-box {
  display: flex;
  justify-content: center;
  flex-direction: row;
}
.loading-text {
  font-size: 34rpx;
  color: #999;
  margin-right: 10rpx;
}
.loading-img {
  animation: rotation 1.5s linear infinite;
  height: 36rpx;
  width: 36rpx;
}

.no-more__text {
  font-size: 34rpx;
  margin-top: 40rpx;
  color: #999;
}

二、使用scroll-view组件

scroll-view是小程序自带的可滚动视图容器组件,可以让我们实现上下左右滑动的效果。使用scroll-view组件时,需要注意的是设置scrollView的高度和触发 scrolltolower 事件的阈值。因为scroll-view默认高度为200px,因此我们可能需要手动设置高度。

代码示例:

// wxml

  

  

// wxss
.scroll-view {
  height: 100%;
}

三、优化列表渲染

当加载更多时,需要新增数据进行渲染,这将导致重新渲染整个列表,而且当数据量庞大时会导致卡顿。解决这个问题的最常见方法是分批次加载数据,比如一次只加载10条,当用户拉到底部时再继续加载10条数据。此外,可以使用小程序官方提供的wx:key属性,让列表渲染时有一个唯一的标识,这样可以避免出现重复渲染的情况。

代码示例:

// wxml

  
   
    
  
   

  

// js
Page({
  data: {
    list: [], // 列表数据
    pageNum: 1, // 当前请求的页码
    limit: 10, // 每页请求的条数
    isLoading: false, // 是否正在加载
    isEnd: false // 是否没有更多数据了
  },
  onReachBottom: function() {
    // 已经全部加载完毕
    if (this.data.isEnd) return

    // 正在加载中
    if (this.data.isLoading) return

    // 开始加载
    this.setData({
      isLoading: true
    })
    this.loadData()
  },
  loadData(pageNum) {
    // 发起请求
    wx.request({
      url: 'xxxxxxx',
      data: {
        pageNum,
        limit: this.data.limit
      },
      success: (res) => {
        const {data} = res.data;
        let list = [];
        if(this.pageNum == 1) {
          list = data;
        } else {
          list = this.data.list.concat(data);
        }
        this.setData({
           list,
           pageNum: pageNum +1,
           isLoading: false,
           isEnd: data.length < this.data.limit ? true: false
        });
      },
      fail: (res) => {
        wx.showToast({
          title: '数据获取失败',
          icon: 'none',
          duration: 1500
        });
      }
    });
  }
})

四、注意事项

上拉加载更多要注意以下几点:

1、保持UI友好:当没有更多数据时应该给出明确的提示,这样用户不会一直拉动列表却发现没有新数据。

2、避免滥用loading:一个好的用户体验应该是迅速地获得想要的内容,而不是一直等待loading。

3、节流与防抖:在触发scrolltolower事件的时候,可能会出现用户希望连续加载的情况,此时可以通过节流或防抖的方式来延迟函数的触发。

小程序上拉加载更多实现技巧及注意事项

2023-05-17
Vue上拉加载更多

2023-05-23
印象笔记记录java学习(Java成长笔记)

2022-11-12
新手php面试技巧和注意事项(新手php面试技巧和注意事项视

2022-11-08
微信小程序上拉加载:实现无缝滚动加载更多内容

2023-05-19
ping-6使用方法,技巧和注意事项

2023-05-21
python技巧笔记(python自学笔记)

2022-11-12
利用jQuery实现下拉框选项改变事件的实用技巧

2023-05-18
java学习笔记(java初学笔记)

2022-11-14
java面试回答问题的小套路,java面试技巧和注意事项

2022-11-21
Vue上拉加载详解

2023-05-17
重学java笔记,java笔记总结

2022-11-23
python基础学习整理笔记,Python课堂笔记

2022-11-21
小程序上拉加载技巧分享,让你的内容无限展示!

2023-05-19
java笔记,尚硅谷java笔记

2022-12-01
htmljs编程笔记(html代码笔记)

本文目录一览: 1、html代码和JS代码有什么区别 2、如何在html中调用js函数 3、JavaScript学习笔记之数组基本操作示例 4、HTML5初学者笔记 5、《web前端笔记7》js字符—

2023-12-08
二级c语言操作题技巧,二级c语言程序题技巧

2022-11-23
jsp程序开发学习笔记2,jsp程序设计题库

本文目录一览: 1、《JSP&Servlet学习笔记》pdf下载在线阅读,求百度网盘云资源 2、林信良编著jsp&servlet学习笔记第2版课后答案吗 3、jsp有没有快速掌握的办法呀? 4、要学J

2023-12-08
js高级程序设计笔记14(js高级程序设计笔记14页)

本文目录一览: 1、JavaScript高级程序设计 该怎么看 2、JavaScript学习笔记之数组基本操作示例 3、JS中有关sort以及return的问题 JavaScript高级程序设计 该怎

2023-12-08
java方法整理笔记(java总结)

2022-11-08