uni-app Skyline scroll-view worklet:onscrollupdate 问题
uni-app Skyline scroll-view worklet:onscrollupdate 问题
示例代码:
<scroll-view type="custom" :scroll-y="true" worklet:onscrollupdate="handleScrollUpdate">
</scroll-view>
操作步骤:
- worklet:onscrollupdate=“handleScrollUpdate”
预期结果:
- 编译成可调用的函数,worklet:onscrollupdate="{{x}}",即worklet:onscrollupdate正常监听。
实际结果:
- 原样编译worklet:onscrollupdate=“handleScrollUpdate”,导致没监听到。
bug描述:
Skyline scroll-view worklet:onscrollupdate 方法名直接编译导致无法调用函数
6 回复
setup() {
const handleScrollUpdate = (evt) => {
‘worklet’;
console.log(‘handleScrollUpdate’)
}
return {
handleScrollUpdate
}
}
暂不支持 compositionApi,可将其抽离成组件;组件options+页面compositionApi,我目前都是这么处理的
有示例吗
回复 7***@qq.com: 社区搜一下“skyline”关键词,很早之前我提过。忘记几楼有demo
别等组合式了,一心去搞app了,透传也不搞了
在 uni-app
中使用 Skyline
引擎时,scroll-view
组件的 worklet:onscrollupdate
事件可能会遇到一些问题。worklet:onscrollupdate
是用于监听滚动事件的回调函数,但在实际使用中,可能会遇到以下问题:
1. 事件未触发
- 原因:
worklet:onscrollupdate
事件可能在某些情况下未正确触发,尤其是在Skyline
引擎中可能存在兼容性问题。 - 解决方案:确保
scroll-view
组件的属性和事件绑定正确。可以尝试使用[@scroll](/user/scroll)
事件作为替代方案,看看是否能正常触发。
<scroll-view [@scroll](/user/scroll)="handleScroll">
<!-- 内容 -->
</scroll-view>
methods: {
handleScroll(event) {
console.log('Scroll position:', event.detail.scrollTop);
}
}
2. 事件触发频率过高
- 原因:
worklet:onscrollupdate
事件可能会在滚动过程中频繁触发,导致性能问题。 - 解决方案:可以通过防抖(debounce)或节流(throttle)来控制事件的触发频率。
let lastScrollTime = 0;
const throttleDelay = 100; // 100ms
methods: {
handleScroll(event) {
const now = Date.now();
if (now - lastScrollTime >= throttleDelay) {
lastScrollTime = now;
console.log('Scroll position:', event.detail.scrollTop);
}
}
}