wechat-miniprogram-examples之滚动加载:scroll-view实现上拉加载更多与下拉刷新的5个技巧

发布时间:2026/10/6 1:47:15

wechat-miniprogram-examples之滚动加载:scroll-view实现上拉加载更多与下拉刷新的5个技巧 wechat-miniprogram-examples之滚动加载scroll-view实现上拉加载更多与下拉刷新的5个技巧【免费下载链接】wechat-miniprogram-examplesWeChat mini program examples. 微信小程序示例项目地址: https://gitcode.com/gh_mirrors/we/wechat-miniprogram-examples在微信小程序开发中scroll-view 上拉加载更多与下拉刷新几乎是每个列表页的标配功能。很多新手在实现时总会遇到滚动不触发重复请求刷新失效等经典问题。而开源项目wechat-miniprogram-examples微信小程序示例中的豆瓣图书、知乎日报两个案例恰好给出了两套风格迥异但都非常经典的滚动加载实现方案非常适合新手对照学习。本文基于该项目源码为你拆解 scroll-view 实现上拉加载更多与下拉刷新的 5 个实用技巧。先认识项目两个现成的滚动加载示例wechat-miniprogram-examples 一共包含三个小程序示例豆瓣图书、知乎日报、事项助手。其中滚动加载相关的核心代码集中在两个目录豆瓣图书上拉加载更多DouBanBookApp/pages/index/知乎日报下拉刷新 加载更多ZhiHuDaily/pages/index/想亲自运行调试可以克隆仓库后分别用微信开发者工具打开对应目录git clone https://gitcode.com/gh_mirrors/we/wechat-miniprogram-examples小提示项目内每个小程序都没有配置 appid运行前需要在开发者工具中为项目分配一个 appid否则真机预览可能受限。技巧1给 scroll-view 一个固定高度让 bindscrolltolower 真正触发 ⚙️上拉加载更多的原理是监听滚动到底部的事件但很多新手发现bindscrolltolower怎么都不触发原因往往是scroll-view 没有固定高度。scroll-view 只有在自身可滚动内容超过可视高度时滚动到底事件才会生效。豆瓣图书示例的做法非常清晰在DouBanBookApp/pages/index/index.wxml中scroll-view scroll-ytrue styleheight:{{scrollHeight}}px bindscrolltolowerscrollLowerEvent高度scrollHeight不是写死的而是在页面onShow时通过wx.getSystemInfo动态获取屏幕高度计算得出见技巧5。触底后由scrollLowerEvent负责加载下一页数据核心判断只有一行!this.data.loadingMore requestData.call(this);技巧2用 loadingMore 标志位防抖避免上拉加载重复请求 ️快速滑动列表时bindscrolltolower可能被连续触发多次如果每次都发请求不仅浪费流量还会造成数据错乱。解决方案就是加载中标志位 短路判断。在DouBanBookApp/pages/index/index.js中数据里维护了一个loadingMore字段请求发起前setData({ loadingMore: true })请求成功/失败后setData({ loadingMore: false })触发事件时!this.data.loadingMore requestData.call(this)这个防抖模式虽然简单却是滚动加载中最重要的一道保险强烈建议每个列表页都加上。技巧3分页参数与数据拼接pageIndex concat 的正确姿势 上拉加载的核心是追加数据而不是覆盖数据。豆瓣图书示例用两个字段管理分页pageIndex当前页码作为请求的start参数传给接口pageData已加载的图书数组每次请求成功后用concat把新数据追加到旧数据后面再递增页码pageData: this.data.pageData.concat(data.books), pageIndex: start 1,知乎日报的加载更多则走时间线思路用日期向前翻页Api.getBeforeNews(dateStr)同样用concat拼接每日新闻。两种分页策略虽不同但追加式数据管理的思路完全一致。技巧4页面级下拉刷新enablePullDownRefresh onPullDownRefresh 滚动加载的另一半是下拉刷新。知乎日报采用的是页面级方案只需两步第一步在页面配置文件ZhiHuDaily/pages/index/index.json中开启开关{ enablePullDownRefresh: true }第二步在ZhiHuDaily/pages/index/index.js中监听下拉事件重新拉取最新数据onPullDownRefresh() { this.onReady(); },由于onReady里已经封装了完整的请求今日热文 轮播图逻辑下拉刷新直接复用它即可代码非常简洁。扩展知识如果你用的是 scroll-view 内部滚动而非整页滚动也可以使用它自带的refresher-enabled属性 bindrefresherrefresh事件实现组件级下拉刷新两种方式按页面结构取舍。技巧5动态计算 scroll-view 高度适配不同机型 scroll-view 需要固定高度但不同手机屏幕高度差异很大写死高度必然出问题。豆瓣图书示例用wx.getSystemInfo动态计算堪称教科书写法wx.getSystemInfo({ success: (res) { this.setData({ scrollHeight: res.windowHeight - (100 * res.windowWidth / 750) }); } })代码中100是顶部搜索框的 rpx 高度通过rpx转px公式rpx值 × 屏幕宽度 / 750换算成像素后从窗口高度中减去剩余部分正好是列表的滚动区域。这也是项目里唯一需要适配计算的技巧学会了它你的列表页在任何机型上都能完美贴合屏幕。常见坑位清单滚动加载避雷指南 问题现象根本原因解决方向bindscrolltolower 不触发scroll-view 无固定高度或内容不满一屏动态计算高度保证内容可滚动快速滑动导致数据重复触底事件连续触发loadingMore 标志位防抖下拉刷新没反应未开启 enablePullDownRefresh页面 json 中开启开关列表数据被覆盖直接赋值而非追加使用 concat 拼接分页数据真机预览异常未配置 appid为项目分配 appid小结跟着示例项目一次学会滚动加载 ✅回顾 wechat-miniprogram-examples 教给我们的 5 个技巧固定 scroll-view 高度、loadingMore 防抖、pageIndex 分页管理、页面级下拉刷新、动态计算高度适配机型。这些模式不仅适用于本项目更是所有微信小程序列表页的通用套路。想深入研读源码推荐重点阅读这两个文件DouBanBookApp/pages/index/index.js—— 上拉加载更多 防抖 分页的完整实现ZhiHuDaily/pages/index/index.js与index.json—— 下拉刷新 按日期加载更多的实现对照源码亲手跑一遍相信你很快就能在自己的小程序中写出丝滑的滚动加载体验【免费下载链接】wechat-miniprogram-examplesWeChat mini program examples. 微信小程序示例项目地址: https://gitcode.com/gh_mirrors/we/wechat-miniprogram-examples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/29 1:57:38

2026年录音转文字工具实测对比:谁才是值得推荐的效率王者?

先说明白核心判断 针对企业管理者的会议记录、决策整理、峰会内容消化、客户访谈梳理等需求,2026年主流录音转文字工具各有适配场景:轻度偶尔使用可选择免费额度充足的产品,深度绑定办公生态的团队选对应生态工具即可,如果你需要…

2026/9/24 5:45:47

年省150元:2026批量图片转文字对比评测,帮办公族选高性价比款

先回答用户真正关心的问题 如果你是需要批量图片转文字、录音转文字做课堂记录、论文访谈整理的学生党,追求高性价比,结合本次我对五款主流工具的当前版本试用对比,选对工具年省150元完全可以实现。没有通用最优解,只有匹配需求的…

2026/10/6 1:43:27

GAN用于MIMO信道估计:解决硬件失真与实测泛化难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:43:27

高通ISP Pipeline详解:从传感器Raw到成片的硬件图像流水线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:43:27

EPKS故障排查实战:从报警泛滥到根因定位的DCS维护方法论

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:43:27

双电源切换还再用二极管?MOS管近零压降方案实测效率拉满

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:43:27

思科3560三层交换机配置实战:VLAN间路由与SVI详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:38:27

LTspice Timestep too small报错根因与5种工程级解决路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑