WePY中如何正确监听页面滚动事件?

西门甜雅 阅读 72

我在用 WePY 开发一个页面,想监听页面的滚动位置来做懒加载,但直接在 methods 里写 onScroll 好像没反应。查了文档说要用 wepy.page 的生命周期,但试了 onPageScroll 还是不触发,是不是写法有问题?

这是我的代码结构:

export default class Index extends wepy.page {
  config = {
    navigationBarTitleText: '首页'
  }

  onPageScroll(e) {
    console.log('滚动了', e.scrollTop)
  }
}
我来解答 赞 10 收藏
二维码
手机扫码查看
2 条解答
洺华~
洺华~ Lv1
在 WePY 中监听页面滚动事件确实有点坑,直接在 methods 里写 onScroll 确实不行,需要使用 WePY 提供的生命周期方法 onPageScroll。不过光定义方法还不够,还需要确保你的页面配置中启用了滚动监听。

你已经在 wepy.page 中定义了 onPageScroll 方法,这一步是对的。但可能遗漏了在页面的 JSON 配置文件中启用滚动监听。你需要在对应的页面的 .json 文件中添加 "enablePullDownRefresh": true 或者 "disableScroll": false,虽然后者默认就是 false,但有时候显式声明一下会更有保障。

不过,通常情况下,只需要确保 onPageScroll 正确定义就行。你可以检查一下你的项目结构,确认 onPageScroll 是否在正确的类中定义,并且这个类被正确引入和使用。

如果问题依然存在,可以尝试在 onLoadonShow 生命周期中手动绑定滚动事件,但这通常不是必需的,因为 onPageScroll 应该已经足够。

这里有个简单的示例,确保你的代码结构类似:

export default class Index extends wepy.page {
config = {
navigationBarTitleText: '首页',
enablePullDownRefresh: true // 确保有这个配置
}

data = {
// 你的数据
}

onLoad() {
// 初始化逻辑
}

onPageScroll(e) {
console.log('滚动了', e.scrollTop)
// 懒加载逻辑可以放在这里
}
}


确保你的 .json 文件中也有相应的配置:

{
"usingComponents": {},
"enablePullDownRefresh": true
}


这样应该就能捕获到滚动事件了。如果还是有问题,可能是 WePY 版本或者项目配置上的其他地方出了问题,可以试试更新 WePY 或者检查项目配置。
点赞
2026-03-21 16:01
天佑🍀
WePY 1.x 里页面滚动事件不是这么写的,得用 this.$wxPage.on('scroll', callback) 来监听:

import wepy from 'wepy';

export default class Index extends wepy.page {
config = {
navigationBarTitleText: '首页'
}

onLoad() {
this.$wxPage.on('scroll', (e) => {
console.log('滚动了', e.scrollTop);
});
}
}


或者用全局的 wepy.onPageScroll 也可以。直接这么写就行,onPageScroll 是原生小程序的写法,WePY 不支持。
点赞
2026-03-17 19:20