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

一、选取适当的加载标志

实现上拉加载更多首先要选择合适的标志来指示用户,一个好的标志可以增加用户的体验。常见的标志方式包括:文字提示、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  {
        wx.showToast({
          title: '数据获取失败',
          icon: 'none',
          duration: 1500
        });
      }
    });
  }
})

四、注意事项

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

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

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

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

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/300940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-29 14:18
下一篇 2024-12-29 14:18

相关推荐

  • QML 动态加载实践

    探讨 QML 框架下动态加载实现的方法和技巧。 一、实现动态加载的方法 QML 支持从 JavaScript 中动态指定需要加载的 QML 组件,并放置到运行时指定的位置。这种技术…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • int类型变量的细节与注意事项

    本文将从 int 类型变量的定义、声明、初始化、范围、运算和类型转换等方面,对 int 类型变量进行详细阐述和讲解,帮助读者更好地掌握和应用 int 变量。 一、定义与声明 int…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python购物车程序

    Python购物车程序是一款基于Python编程语言开发的程序,可以实现购物车的相关功能,包括商品的添加、购买、删除、统计等。 一、添加商品 添加商品是购物车程序的基础功能之一,用…

    编程 2025-04-29
  • 爬虫是一种程序

    爬虫是一种程序,用于自动获取互联网上的信息。本文将从如下多个方面对爬虫的意义、运行方式、应用场景和技术要点等进行详细的阐述。 一、爬虫的意义 1、获取信息:爬虫可以自动获取互联网上…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29

发表回复

登录后才能评论