微信小程序之下拉刷新,上拉更多列表实现

向右看齐 2022-05-29 23:20 521阅读 0赞

代码地址如下:
http://www.demodashi.com/demo/11110.html

一、准备工作

首先需要下载小程序开发工具
官方下载地址:
https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

目录结构说明

2017-08-11-005837.jpg

二、程序实现

1.运行开发工具

选择「本地小程序项目」
2017-08-10-134943.jpg

2.新建项目

2017-08-10-135152.jpg

3.开启接口域名免校验

2017-08-10-135300.jpg

4.运行效果

2017-08-10-_E6_9C_AA_E5_91_BD_E5_90_8D.gif

三、功能说明

1.通过page方式实现下拉刷新,上拉更多列表

onPullDownRefresh 下拉刷新API

  1. // 下拉 刷新列表(滚到顶部)
  2. onPullDownRefresh: function (e) {
  3. if (!refresh) {
  4. var that = this;
  5. refresh = true;
  6. // 显示刷新动画
  7. that.setData({
  8. refreshhidden: false
  9. })
  10. wx.request({
  11. url: 'https://news-at.zhihu.com/api/4/news/latest',
  12. method: 'get',
  13. data: {},
  14. header: { "Content-Type": "application/json" },
  15. success: function (res) {
  16. // 数据加载完成后 延迟隐藏loading
  17. setTimeout(function () {
  18. wx.clearStorageSync(); // 清空数据
  19. // 重置列表为空
  20. that.setData({
  21. datalist: []
  22. })
  23. refresh = false;
  24. var arr = res.data;
  25. var format = util.getFormatDate(arr.date);
  26. arr["dateDay"] = format.dateDay;
  27. var list = that.data.datalist;
  28. that.setData({
  29. datalist: list.concat(arr),
  30. dataListDateCurrent: arr.date,
  31. dataListDateCount: 1,
  32. refreshhidden: false
  33. });
  34. }, 2000);
  35. }
  36. });
  37. } else {
  38. console.log("正在刷新...");
  39. }
  40. },

onReachBottom 滑动到底部API(上拉更多)

  1. // 上拉 加载更多(滚到底部)
  2. onReachBottom: function (e) {
  3. var that = this;
  4. // 加载更多 loading
  5. that.setData({
  6. loadmorehidden: false
  7. })
  8. var currentDate = this.data.dataListDateCurrent; // 请求参数:日期
  9. // 限制加载次数
  10. if (this.data.dataListDateCount >= 3) {
  11. that.setData({ // 加载更多 loading
  12. loadmorehidden: true
  13. });
  14. } else {
  15. // 记录请求日期参数,避免滚动到底部事件,多次触发相同请求
  16. if (currentDate == wx.getStorageSync("currentDate")) {
  17. console.log(currentDate + "已发起请求!");
  18. } else {
  19. wx.request({
  20. url: 'https://news-at.zhihu.com/api/4/news/before/' + currentDate,
  21. method: 'get',
  22. data: {},
  23. header: { "Content-Type": "application/json" },
  24. success: function (res) {
  25. var arr = res.data;
  26. var format = util.getFormatDate(arr.date);
  27. arr["dateDay"] = format.dateDay;
  28. var list = that.data.datalist;
  29. that.setData({
  30. datalist: list.concat(arr),
  31. dataListDateCurrent: arr.date,
  32. dataListDateCount: that.data.dataListDateCount + 1
  33. });
  34. }
  35. });
  36. }
  37. }
  38. },

2.结合weui实现加载动画效果

在wxml界面,结合weui加载更多组件,实现加载动画效果

  1. <!-- 列表 下拉刷新 动画 -->
  2. <view class="hot-box-top" hidden="{ {!refreshhidden}}">
  3. <view class="weui-loadmore">
  4. <view class="weui-loading"></view>
  5. <view class="weui-loadmore__tips">正在刷新...</view>
  6. </view>
  7. </view>
  8. <!-- 列表 上拉加载更多 动画 -->
  9. <view class="hot-box-more">
  10. <view wx:if="{ {!loadmorehidden}}">
  11. <view class="weui-loadmore">
  12. <view class="weui-loading"></view>
  13. <view class="weui-loadmore__tips">加载更多...</view>
  14. </view>
  15. </view>
  16. <view wx:else>
  17. <text> 没有更多了 </text>
  18. </view>
  19. </view>

3.结合知乎app接口实现数据的动态加载

通过使用知乎API实现动态数据的加载

API1:获取最新 精选 信息列表

1.接口地址
https://news-at.zhihu.com/api/4/news/latest
2.输入参数(无)
3.返回参数

  1. {
  2. "dateDay" : "08月07日 星期一",
  3. "top_stories" : [ { "id" : 9560543, "title" : "对于嘲讽对手的行为,只能说「电子竞技不相信眼泪」", "image" : "https://pic1.zhimg.com/v2-c7a203de0c6a6d451d44ad1a415cc6b0.jpg", "type" : 0, "ga_prefix" : "080717" }, { "id" : 9560143, "title" : "知道苹果公司有钱,但没想到美国政府还欠它 526 亿美元", "image" : "https://pic2.zhimg.com/v2-0d313023bc8c4b3f2e68ea65aeeebc35.jpg", "type" : 0, "ga_prefix" : "080713" }, { "id" : 9556786, "title" : "想要做好尽职调查,必须细致到连企业的厕所也不能放过", "image" : "https://pic4.zhimg.com/v2-8efe699a0ad605d935fe53a5d2d3d147.jpg", "type" : 0, "ga_prefix" : "080711" }, { "id" : 9559601, "title" : "博尔特在北京奥运的表演仿佛就在昨天,现在已是传奇谢幕", "image" : "https://pic2.zhimg.com/v2-49c4ccda5bc1fb4fc10b2529a563e3dd.jpg", "type" : 0, "ga_prefix" : "080707" }, { "id" : 9552053, "title" : "满眼二维码,在移动支付上银行已经输了?其实混战才开始", "image" : "https://pic1.zhimg.com/v2-04123bb20c6637a15dcd1eac71c4f6e8.jpg", "type" : 0, "ga_prefix" : "080709" } ],
  4. "stories" : [ { "id" : 9560228, "title" : "被吓得头皮发麻、脊背发凉……但真的太「爽」了", "type" : 0, "images" : [ "https://pic1.zhimg.com/v2-31792fa6be283373ce3b8574940342d8.jpg" ], "ga_prefix" : "080721" }, { "id" : 9559747, "title" : "「孩子哭别管他,哭累了就睡了」,这种方法真的不行", "type" : 0, "images" : [ "https://pic2.zhimg.com/v2-b1f5f7c5384a682fe07dd2a573541bb9.jpg" ], "ga_prefix" : "080710" }, { "id" : 9552053, "title" : "满眼二维码,在移动支付上银行已经输了?其实混战才开始", "type" : 0, "images" : [ "https://pic3.zhimg.com/v2-c191427cc66d14db722d2875484b362a.jpg" ], "ga_prefix" : "080709" }, { "id" : 9559040, "title" : "好好的一个年轻人,怎么就……中了回锅肉的毒", "type" : 0, "images" : [ "https://pic2.zhimg.com/v2-67ec769321d8c64e05c9adde287ed711.jpg" ], "ga_prefix" : "080708" }, { "multipic" : true, "id" : 9559601, "title" : "博尔特在北京奥运的表演仿佛就在昨天,现在已是传奇谢幕", "type" : 0, "ga_prefix" : "080707", "images" : [ "https://pic4.zhimg.com/v2-676d2821c51bd66f05a1ffcea167fe1b.jpg" ] }, { "id" : 9558150, "title" : "这里是广告 · 蜀道有栈桥何惧上青天", "type" : 0, "images" : [ "https://pic1.zhimg.com/v2-4fd0510d4ef0766c07605e1bd3c6bfc4.jpg" ], "ga_prefix" : "080706" } ],
  5. "date" : "20170807" }
API2:获取历史记录

1.接口地址
https://news-at.zhihu.com/api/4/news/before/20170807
https://news-at.zhihu.com/api/4/news/before/日期
2.输入参数:日期
3.返回参数

  1. {
  2. "date" : "20170806",
  3. "stories" : [ { "id" : 9548310, "title" : "小事 · 呃……我赢了?", "type" : 0, "images" : [ "https://pic4.zhimg.com/v2-ee8be37e57714d08dfb497e72f0288db.jpg" ], "ga_prefix" : "080622" }, { "id" : 9551898, "title" : "他的音乐可令时光倒流,五座小金人不足以说明他的成就", "type" : 0, "images" : [ "https://pic1.zhimg.com/v2-cdaabf222267bb7162abd089fc45bc24.jpg" ], "ga_prefix" : "080621" }, { "id" : 9549918, "title" : "玩了这么多年魔兽,我就是对这个设计有意见", "type" : 0, "images" : [ "https://pic4.zhimg.com/v2-02d7621c85df476d6c9e99b07c186883.jpg" ], "ga_prefix" : "080620" } ] }

微信小程序之下拉刷新,上拉更多列表实现

代码地址如下:
http://www.demodashi.com/demo/11110.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

发表评论

表情:
评论列表 (有 0 条评论,521人围观)

还没有评论,来说两句吧...

相关阅读

    相关 程序加载

    > 无论是微信小程序还是其他前端框架,都会遇到上拉加载(懒加载)和下拉刷新这种问题。其实理清楚什么时候请求数据、请求返回的几种情况,那么做这个懒加载就很简单了。 一、首先,