微信小程序开发中,请求数据列表,第一次请求10条,滑动到最低自动再请求10条,后面请求的10条怎么加到第一次请求的10条后面?

在微信小程序中实现分页加载数据列表,可通过以下步骤将后续请求的10条数据追加到首次加载的数据之后:

实现步骤及代码示例

  1. 定义页面数据与参数

    在页面的 data 中初始化存储列表、页码、加载状态及是否有更多数据的标识:

javascript 复制代码
Page({
  data: {
    list: [],        // 存储所有加载的数据
    pageNum: 1,      // 当前页码
    pageSize: 10,    // 每页数据量
    hasMore: true,   // 是否还有更多数据
    isLoading: false // 防止重复请求
  }
});
  1. 首次加载数据

在页面加载时(如 onLoad)调用数据加载方法:

javascript 复制代码
onLoad() {
  this.loadData();
}

3.实现数据加载方法

处理分页请求,合并新旧数据并更新状态:

javascript 复制代码
loadData() {
  if (!this.data.hasMore || this.data.isLoading) return;

  this.setData({ isLoading: true });
  const { pageNum, pageSize } = this.data;

  wx.request({
    url: 'https://api.example.com/list',
    data: { page: pageNum, pageSize },
    success: (res) => {
      if (res.statusCode === 200) {
        const newList = res.data.list;
        const total = res.data.total; // 假设接口返回总条数
        const currentTotal = this.data.list.length + newList.length;

        this.setData({
          list: [...this.data.list, ...newList], // 追加新数据
          pageNum: pageNum + 1,
          hasMore: currentTotal < total, // 判断是否还有更多
          isLoading: false
        });
      }
    },
    fail: (err) => {
      console.error('请求失败:', err);
      this.setData({ isLoading: false });
      wx.showToast({ title: '加载失败', icon: 'none' });
    }
  });
}

4.监听滑动到底部事件

使用 onReachBottom 生命周期函数触发加载:

javascript 复制代码
onReachBottom() {
  this.loadData();
}

5.页面渲染与状态提示

在 WXML 中渲染列表及加载状态:

javascript 复制代码
<!-- 列表渲染 -->
<view wx:for="{{list}}" wx:key="id">
  {{item.content}}
</view>

<!-- 加载提示 -->
<view wx:if="{{isLoading}}" class="loading">加载中...</view>
<view wx:if="{{!hasMore}}" class="no-more">没有更多数据了</view>

6.CSS 样式优化体验

添加加载状态的样式:

javascript 复制代码
.loading, .no-more {
  text-align: center;
  padding: 20rpx;
  color: #666;
}

关键点解析

  • 分页参数管理 :通过 pageNum 跟踪当前页码,每次请求后递增,确保获取正确数据。

  • 数据合并 :使用扩展运算符 ...concat 将新旧数组合并,实现无缝追加。

  • 加载状态控制 :利用 isLoading 防止重复请求,提升用户体验及性能。

  • 无数据判断 :根据接口返回的总条数或当前加载数量动态设置 hasMore,精准控制加载终止条件。

相关推荐
盛夏绽放15 小时前
关于 uni-app 与原生微信小程序中的生命周期 —— 一次“生命旅程”的解读
微信小程序·小程序·uni-app
流水线上的指令侠16 小时前
使用C#写微信小程序后端——电商微信小程序
微信小程序·小程序·c#·visual studio
知识分享小能手16 小时前
uni-app 入门学习教程,从入门到精通,uni-app 基础知识详解 (2)
前端·javascript·windows·学习·微信小程序·小程序·uni-app
2501_9160088917 小时前
iOS 发布全流程详解,从开发到上架的流程与跨平台使用 开心上架 发布实战
android·macos·ios·小程序·uni-app·cocoa·iphone
小岛前端19 小时前
🔥Vue3 移动端组件精选!满足各种场景!
前端·vue.js·微信小程序
cesske20 小时前
uniapp 编译支付宝小程序canvas 合成图片实例,支付宝小程序 canvas 渲染图片 可以换成自己的图片即可
小程序·uni-app·apache
從南走到北1 天前
JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
java·开发语言·微信小程序·小程序
木易 士心1 天前
组织架构树形选择组件使用说明(Vue3 + UniApp)
微信小程序·钉钉·notepad++
软件技术员1 天前
微信小程序电子测宅堪墓风水罗盘
微信小程序·小程序
future_studio1 天前
聊聊 Unity(小白专享、C# 小程序 之 播放器)
unity·小程序·c#