最彻底的去除方式是pages.json中关闭enablepulldownrefresh;若仅删onpulldownrefresh方法而保留该配置,会导致下拉有阻力无反应;各端需针对性处理:小程序/app须显式设为false,h5支持运行时关闭但静态配置更稳妥,支付宝小程序还需加allowsbouncevertical:"no"或调用my.setcanpulldown。

pages.json 里关掉 enablePullDownRefresh 就行
只要没配 enablePullDownRefresh: true,uni-app 根本不会挂载原生下拉刷新控件,也就不存在“样式”可言。这是最干净、最彻底的去除方式。
常见错误是只删了 onPullDownRefresh 方法,却忘了 pages.json 还留着 "enablePullDownRefresh": true —— 此时下拉区域仍存在,只是回调不执行,用户会看到一个“有阻力但无反应”的诡异状态。
- 小程序和 App 端必须在
pages.json中对应页面的style节点里显式设为false(不能省略) - H5 端支持运行时关闭,但静态配置更稳妥,避免条件判断遗漏
- 支付宝小程序额外需要
"allowsBounceVertical": "NO"(注意是字符串"NO",不是布尔值)才能禁掉物理回弹效果
scroll-view 自定义下拉时怎么隐藏默认刷新层
如果你用了 scroll-view 并开启了 refresher-enabled,那它自带的灰色圆圈+箭头就是“默认刷新样式”。这个样式无法通过 CSS 覆盖,只能靠属性控制显隐。
-
refresher-triggered必须先设为true再设为false才能真正收起动画;直接从false → false或没触发就设false都无效 - 别在
@refresherrefresh回调末尾立刻赋值refresher-triggered = false,要加setTimeout(() => this.refresherTriggered = false, 10)确保 DOM 更新时机 - Android 真机上若仍有残留动画,检查是否误启了
refresher-default-style="black"(仅影响颜色,但设了会强化系统默认行为)
App 端自定义下拉层后还透出原生样式?
App(iOS/Android)原生下拉控件一旦启用,就会抢占手势和渲染层。哪怕你用 scroll-view 盖了一层自定义遮罩,原生动画仍可能在松手瞬间闪一下——这不是 bug,是原生容器未被真正禁用。
- 必须确认
pages.json中该页面的enablePullDownRefresh是false,且没被条件编译意外覆盖 - nvue 页面不走原生下拉逻辑,但也不支持
refresher-enabled,得用scroll-view+ 手势监听,此时完全可控 - 如果用了自定义导航栏(
navigationStyle: custom),原生下拉区域可能被裁剪,导致“部分显示”,这时反而更容易漏出残影
支付宝小程序下拉拽感去不掉?
支付宝小程序即使关了 enablePullDownRefresh,默认仍允许垂直弹性滚动(allowsBounceVertical: "YES"),用户下拉时会有空荡荡的 bounce 效果,容易误以为“刷新没关干净”。
- 必须用条件编译加
"allowsBounceVertical": "NO",写在pages.json对应页面的style下 - 或者用 API:
#ifdef MP-ALIPAY块里调my.setCanPullDown({ canPullDown: false }) - 这两个方案不互斥,建议都加上,尤其在多端共用配置时,避免某端漏掉











