微信小程序如何做触底加载分页功能

微信小程序如何做触底加载分页功能

分页分为两种,一种是一次性将后台数据请求过来,再对这些数据进行分页,第二种就是一次请求几条数据,分批次请求,一般情况下是推荐第二种,因为第一种很容易造成服务器的卡顿
  • 以列表页为例,一页十条,触底则加载下一页

  • 大概思路就是将你每次要请求多少条数据传到后台接口,后台会返回你请求的这几条数据,在用户下拉一次时再去请求一次接口,每请求一次,当前页数+1,将接口返回的数据 concat( ) 拼接,存放在需要循环的数组对象中

         //isPage表示是否分页请求
         //getOrganizationLists是你自定义命名的方法名称
         //async 表示这个方法是异步的
         async getOrganizationLists(isPage) {
				var that = this
				if (isPage) {
				   //如果分页就把当前页数加1  page表示当前页数
				   this.setData({
				      page:this.data.page + 1
				   })
				} else {
				    //如果不是分页加载 默认请求第一页的数据 
				    //这时候用来循环列表的数组storesList重置为[] 
				    //status表示当前加载分页的状态 为loadmore时显示加载更多
				    this.setData({
				      page:1,
				      storesList:[],
				      status:'loadmore'
				   })
				}
				//自定义一个临时变量,存放当前的列表数据
				var storesList = this.data.storesList;
				//this.$api是封装的一个请求方法,
				//organizationLists是请求接口方法名称
				this.$api.organizationLists({
				    //传当前页数给接口,告诉接口当前请求的第几页
					page: this.data.page,
				}, function(res) {
				    //这里两个数组相加,接口返回的数组加上当前请求到的数组数据
					storesList = storesList.concat(res.data.list.data)
					//赋值到data中的变量
					that.setData({
				       storesList:storesList 
				   })
				    //当前的请求的页数已经大于等于接口返回的最后一页页数了
					if (that.data.page >= res.data.last_page) {
					//nomore表示没有更多了
						that.data.status = 'nomore'
					}
				})
			},
        //生命周期内调用
        //页面加载的时候调用方法,进入页面默认请求第一页
        onLoad() {
			this.getOrganizationLists();
		},
		//当前页面拉到底部  调用分页加载方法
		onReachBottom() {
		    //如果不是请求到了最后一页,才加载分页方法
		    if(this.data.status!='nomore'){
		         this.getOrganizationLists(true)
		    }
			
		},
<!-- 在wxml中循环这个storesList变量 -->
<view v-for="(item,index) in list" :key="cindex" class="dis-flex nearby-stores-item flex-x-between">
</view>
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
微信小程序中,可以使用wx.request()方法向后端请求数据。对于分页查询,可以在请求时传递两个参数:page和pageSize,分别表示请求的页码和每页请求的数据条数。当用户上拉加载时,可以在当前页码的基础上+1,然后再次向后端发起请求,这样就可以实现分页查询。具体实现步骤如下: 1. 在wxml文件中创建一个scroll-view组件,并设置属性enable-back-to-top为true,以支持快速返回顶部功能。 ```html <scroll-view class="content" scroll-y="true" enable-back-to-top="{{enableBackToTop}}" bindscrolltolower="loadMore"> <!--渲染数据--> </scroll-view> ``` 2. 在js文件中定义一个变量page,表示当前页码。 ```javascript let page = 1; ``` 3. 定义一个loadMore()方法,在该方法中发起请求获取下一页数据,并将数据添加到当前页面中已经渲染的数据列表中。 ```javascript loadMore: function() { wx.showLoading({ title: '正在加载中...', }); let that = this; wx.request({ url: 'url/to/your/api', data: { page: page+1, pageSize: 10 }, success: function(res) { wx.hideLoading(); let newData = res.data.result; if (newData.length > 0) { page++; that.setData({ list: that.data.list.concat(newData) }); } else { wx.showToast({ title: '没有更多数据啦', icon: 'none' }); } }, fail: function() { wx.hideLoading(); wx.showToast({ title: '请求失败,请稍后重试', icon: 'none' }); } }); } ``` 4. 在onLoad()方法中,初始化数据并调用loadMore()方法获取第一页数据。 ```javascript onLoad: function() { this.setData({ list: [], enableBackToTop: false }); page = 1; this.loadMore(); } ``` 通过以上步骤,就可以实现微信小程序上拉加载分页查询的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值