只要用户在 Page 构造时传入了 onPageScroll 监听,基础库就会认为开发者需要监听页面 scoll 事件。此时,当用户滑动页面时,事件会以很高的频率从视图层发送到逻辑层,存在一定的通信开销。
类似的,对于 <scroll-view>
、<page-meta>
等可以通过 bindscroll 监听滑动事件的组件,也会存在这一情况。
正是由于 scroll 事件触发的频率很高,因此开发者很容易误用,在使用时需要注意:
- ? 非必要不监听 scroll 事件;
- ? 在实现与滚动相关的动画时,优先考虑滚动驱动动画(仅
<scroll-view>
)或 WXS 响应事件 - ? 不需要监听事件时,Page 构造时应不传入 onPageScroll 函数,而不是留空函数;
- ? 避免在 scroll 事件监听函数中执行复杂逻辑;
- ? 避免在 scroll 事件监听中频繁调用 setData 或同步 API。
Page({
onPageScroll () {} // ?不要保留空函数
})
Page({
// ? 应直接不传入
})