mpvue中如何正确监听页面滚动事件?
我在用mpvue开发微信小程序时,想监听页面的滚动事件来做懒加载,但发现直接在页面里写onScroll根本没反应。查了文档说要用scroll-view组件包裹内容并绑定@scroll事件,可这样又导致整个页面结构要大改,而且下拉刷新也不好处理。
有没有办法在不改动现有布局的前提下,直接监听页面级的滚动?我试过在mounted里加uni.onWindowScroll,但控制台报错说找不到这个API。现在卡在这儿了,求指点!
export default {
mounted() {
// 这样写会报错:TypeError: uni.onWindowScroll is not a function
uni.onWindowScroll((res) => {
console.log('scroll', res.scrollTop)
})
}
}
onPageScroll这个生命周期函数,而不是uni的什么方法。在你的page配置里加上这个函数就能搞定:
记得要把这个写在export对象的顶层,跟data、methods这些同级。这样就不用改布局,也不用加什么scroll-view组件了。
这里要注意个坑:如果页面有tab切换或者动态内容高度变化,最好给页面加个固定高度,不然滚动事件可能不准。
我之前也踩过这坑,浪费了不少时间调试。希望这次能帮你少走弯路。
这货是微信小程序原生提供的API,只能在页面js里用,组件里无效。你项目结构里那个main.json对应的页面js文件知道吧,就写那儿。