小程序 页面懒加载功能 分页加载

工作日志 随手笔记 仅供参考

页面下拉的时候显示正在加载

加载完之后显示暂无数据

 

 <view class='release_list'>

      <view wx:for="{{release}}" class='shoppcall comment' data-id="{{item.id }}">
           
           <button wx:if='{{item.is_me == 1}}' class='revoke' bindtap='binddelete' data-id='{{item.id}}' data-index='{{index}}'>撤销</button>
           
           <view class='publish'>
            <image src='{{item.avatar}}'></image>
           
            <view class='publish_list'>
              <text class='publish_list_item'>{{item.username}}</text>
              <view class='like'>
                <text class='publish_time'>{{item.publish_time}}</text>
                 <view  class='like_num_list' bindtap='bindlike' data-id='{{item.id}}'>
                    <text class='iconfont icon-dianzan2' style='{{item.like==1?"color:red":"color:black"}}'></text>
                   
                    <text class='like_num'>{{item.likes_count}}</text>
                 </view>
               
              </view>
             
              <text class='redtree_text'>{{item.content}}</text>
            </view>
           </view>
          
         
       </view>    

       <view  class='Nocomment' wx:if='{{release.length == 0}}'>
         暂无评论
       </view>

   </view>
     
    <view class='loadmore' hidden='{{isShowLoadmore}}'>
      <view class='loading'></view>
      <view class='loadmore_tips'>正在加载</view>
    </view>
    <view class="loadmore loadmore_line" hidden='{{!isShowNoDatasTips}}'>
      <view class="loadmore_tips">暂无数据</view>
     </view>

    

 data:{
release:''
page :2, //从第二页开始加载 
page_size:10, //每页加载十个 
isShowLoadmore:false, //正在加载 
isShowNoDatasTips:false, //暂无数据
 endloading: false } //判断是否还有数据

 

// 评论分页加载
  reviewpage:function(e){
    var that =this;
    var id = this.data.id;
    var page = this.data.page;
     wx.request({
       url: '后台给你的数据接口', 
       method:'POST' ,
       data:{
          id:id,  //这个是店铺的id 传给后台 不然不知道返回给你哪个店铺的评论
          page:that.data.page, //默认从第二页加载
          page_size:that.data.page_size //每页加载十条评论 自己设置
       },
       header: {
         'appid': 'fZ4wruPFDWZTEwD1gUhbkez0CUmeWGJx',
         'mbcore-access-token': wx.getStorageSync('access_token'),
         'mbcore-auth-token': wx.getStorageSync('auth_token')
       },
       success:function(res){
         console.log(res)
         console.log('→')
         if(res.data.code == 1){  //判断当code == 1 的时候得到数据

           var datas = res.data.result.comments; // 下面有得到的数据可以参考
           if (res.data.result.more_data == 0){ //如果more_data == 0 表示没有可加载的数据了
             that.setData({
               isShowLoadmore: true, //隐藏正在加载
               isShowNoDatasTips: true, //显示暂无平路
               endloading: true, //上拉不在加载
             })
               
           }else {
             console.log('走到这了')
              that.setData({
                release: that.data.release.concat(datas)  //将得到的评论添加到release 中 更新
              })
              if (datas.length < that.data.page_size){ //如果剩下评论数 小于10表示数据加载完了
                console.log('已经加载完了')
                that.setData({
                  isShowLoadmore: false, //隐藏正在加载
                  isShowNoDatasTips: false, //显示暂无数据
                })
              }
           }
           that.setData({
             page:page+1 //更新page 请求下一页数据
           })
         }else{
           console.log('code等于0啊!')
         }
       }
     })
  },
/**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    var that = this;
    var endloading = that.data.endloading
    if (!endloading){
      that.reviewpage()  页面上拉调用这个方法
    }
  },

 

 

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序的上拉加载分页查询可以通过使用小程序原生组件 `scroll-view` 和 `onReachBottom` 事件来实现。 首先,在 `wxml` 中使用 `scroll-view` 组件来实现滚动条,并使用 `wx:for` 绑定数据列表: ```html <scroll-view scroll-y="true" bindscrolltolower="onReachBottom"> <view wx:for="{{list}}" wx:key="id"> <!-- 展示数据 --> </view> </scroll-view> ``` 然后,在 `js` 中监听 `onReachBottom` 事件,在触发事件时,向后端请求下一页数据,并将新数据与已有数据合并: ```javascript Page({ data: { list: [], // 已有数据列表 page: 1, // 当前页数 pageSize: 10 // 每页数据量 }, onReachBottom() { wx.showLoading({ title: '加载中', mask: true }) // 请求下一页数据 api.getList(this.data.page + 1, this.data.pageSize).then(res => { wx.hideLoading() const newList = res.data.list if (newList.length) { // 如果有新数据 this.setData({ list: [...this.data.list, ...newList], // 合并数据 page: this.data.page + 1 // 更新页数 }) } else { // 如果没有新数据,说明已经加载完毕 wx.showToast({ title: '已经到底了', icon: 'none' }) } }).catch(() => { wx.hideLoading() wx.showToast({ title: '加载失败,请重试', icon: 'none' }) }) } }) ``` 这样就可以实现微信小程序的上拉加载分页查询了。需要注意的是,在请求数据时需要显示加载提示,避免用户误以为程序出现了问题。同时,如果没有新数据,需要提示用户已经到底了,避免用户不必要的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值