小程序 - 加载下一页数据的注意点

1. 合并数据
this.list=[…this.list,…res.data.message.goods];

请求接口以及返回数据:
在这里插入图片描述
加载下一页 - pagesum++, 返回的数据是每页的数据,也需要之前页的数据展示。
错误:this.list=res.data.message.goods;
正确:this.list=[…this.list,…res.data.message.goods];

2. 页面上拉触底事件触发this.pagenum++, 写在请求成功里面,而不是直接写在onReachBottom(页面上拉触底事件的处理函数)里面 — 解决了不会同时存在多个请求,避免服务器的崩溃

                  //页面上拉触底事件的处理函数
		           onReachBottom(){			
			        this.getlist();
		            },
		            
                  success:(res)=>{
						console.log(res.data);
						this.list=[...this.list,...res.data.message.goods];		
						if(this.list.length>=res.data.message.total){
							this.showall=true;
						}
						this.isloading=false;
						//请求成功后才页面数+1,防止请求同时请求多个页数
						this.pagenum++;
					}

3. 如果开关是正在加载的状态,直接返回 — if(this.loading) return;
触底时如果已经有请求,不再请求,等待请求完成

       data() {
			return {
				isloading:false,
			}
		},

                getlist(){
				// 如果开关是正在加载的状态,直接返回
				if(this.loading || this.showall){
					return;
				}
				// 打开开关
				this.isloading=true;
				uni.request({
					url:'https://xxxx/api/public/v1/goods/search',
					data:{
						query:'TCL',
						pagenum:this.pagenum,
						pagesize:10
					},
					success:(res)=>{
						console.log(res.data);
						this.list=[...this.list,...res.data.message.goods];		
						if(this.list.length>=res.data.message.total){
							this.showall=true;
						}
						// 关闭,表示加载完毕
						this.isloading=false;
						//请求成功后才页面数+1,防止请求同时请求多个页数
						this.pagenum++;
					}
				})
			}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小程序分页加载后端数据可以通过以下步骤实现: 1. 在前端页面中定义一个列表,用于展示后端返回的数据。 2. 在小程序中,使用`wx.request`函数向后端发送请求,获取需要展示的数据,并将数据存储在前端的一个数组中。 3. 在前端页面中,使用`wx.showLoading`函数显示加载中的提示。 4. 当用户下拉页面时,触发`onReachBottom`函数,加载一页数据。 5. 在`onReachBottom`函数中,使用`wx.showLoading`函数显示加载中的提示,并发送请求获取下一页数据。 6. 将获取到的下一页数据追加到前端数组中,并更新前端页面的列表。 7. 当没有更多数据时,使用`wx.showToast`函数显示已经到底的提示。 8. 在`wx.showLoading`和`wx.showToast`函数的回调函数中,使用`wx.hideLoading`函数隐藏加载提示。 代码示例: ``` // 定义一个数组,用于存储后端返回的数据 let dataList = []; // 发送请求获取数据 function getData(page) { wx.request({ url: 'http://example.com/api/data', data: { page: page }, success: function(res) { // 将获取到的数据追加到数组中 dataList = dataList.concat(res.data); // 更新列表 updateList(); } }) } // 更新列表 function updateList() { // 更新前端页面的列表 } // 监听用户下拉页面事件,加载一页数据 Page({ data: { page: 1 }, onReachBottom: function() { // 显示加载中的提示 wx.showLoading({ title: '加载中' }) // 发送请求获取下一页数据 getData(this.data.page + 1); // 更新页码 this.setData({ page: this.data.page + 1 }) } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值