微信小程序 27 商品列表 加载下一页数据 下拉刷新页面 加载中的提示图标

本文详细介绍了如何在微信小程序中实现商品列表的无限滚动加载和下拉刷新功能。通过监听onReachBottom事件检测页面滚动到底部,并计算总页数和当前页码,判断是否有下一页数据。当有下一页时,更新页码并重新请求数据,使用数组拼接的方式更新列表,避免数据丢失。同时,展示了如何处理下拉刷新事件,重置页码并更新数据。整个过程结合了数据请求、状态管理和页面交互逻辑。
摘要由CSDN通过智能技术生成

27 商品列表 加载下一页数据

1 用户上滑页面 滚动条触底 开始加载下一页数据
1 找到滚动条触底事件 微信小程序官方开发文档寻找
2 判断还有没有下一页数据
1 获取到总页数 只有总条数
总页数 = Math.ceil(总条数 / 页容量 pagesize)
总页数 = Math.ceil( 23 / 10 ) = 3
2 获取到当前的页码 pagenum
3 判断一下 当前的页码是否大于等于 总页数
表示 没有下一页数据
3 假如没有下一页数据 弹出一个提示
4 假如还有下一页数据 来加载下一页数据
1 当前的页码 ++
2 重新发送请求
3 数据请求回来 要对data中的数组 进行 拼接 而不是全部替换!!!

触底事件

onReachBottom页面上拉触底事件的处理函数function

js

  onReachBottom(){
    console.log("我是有底线的");
  }

判断有没有下一页

1 获取到总页数 只有总条数
总页数 = Math.ceil(总条数 / 页容量 pagesize)
总页数 = Math.ceil( 23 / 10 ) = 3
2 获取到当前的页码 pagenum
3 判断一下 当前的页码是否大于等于 总页数
表示 没有下一页数据

js

//要查询的参数
  QueryParams:{
    query:"",
    cid:"",
    pagenum:1,
    pagesize:10
  },
  totalPages:1,
  async getGoodList(){
  //resolve(result.data.message);
    const res=await request({url:"/goods/search",data:this.QueryParams});
    const total=res.total
    this.setData({
      goodsList:res.goods
    })
  },
  • 是不是 const 常量变量赋值时是“=”
  • ,data:this.QueryParams看不太懂,没申请total,却有total值
    在这里插入图片描述
    在这里插入图片描述
  onReachBottom(){
  	if()
    console.log("我是有底线的");
  }
  • 花式打印?

假如还有下一页数据 来加载下一页数据

1 当前的页码 ++
2 重新发送请求
3 数据请求回来  要对data中的数组 进行 拼接 而不是全部替换!!!
      this.setData({
        goodsList:[...this.data.goodsList,...res.goods]
      })
  onReachBottom(){
    if(this.QueryParams.pagenum>=this.totalPages){
      wx.showToast({
        title:"我是有底线的"
      });
    }else{
      this.QueryParams.pagenum++;
      this.getGoodList();
    }
  }

下拉刷新页面

1 触发下拉刷新事件 需要在页面的json文件中开启一个配置项
找到 触发下拉刷新的事件 enablePullDownRefresh
2 重置 数据 数组 onPullDownRefresh
3 重置页码 设置为1
4 重新发送请求
5 数据请求回来 需要手动的关闭 等待效果

  async getGoodList(){
    //resolve(result.data.message);
      const res=await request({url:"/goods/search",data:this.QueryParams});
      const total=res.total;
      this.totalPages=Math.ceil( total / this.QueryParams.pagesize);
      this.setData({goodsList:[...this.data.goodsList,...res.goods]})
      wx.stopPullDownRefresh();
    },
  onPullDownRefresh(){
    this.setData({goodsList:[]});
    this.QueryParams.pagenum=1;
    this.getGoodList();
  }

加载中的提示图标

export const request = (params) => {

    wx.showLoading({
        title: "加载中",
        mask: true,
    });
      

    const baseUrl = "https://api-hmugo-web.itheima.net/api/public/v1";
    return new Promise((resolve, reject) => {
        wx.request({
            ...params,
            url: baseUrl + params.url,
            success: (result) => {
                resolve(result.data.message);
            },
            fail: (err) => {
                reject(err);
            },
            complete:()=>{
                wx.hideLoading();
            }
        })
    })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值