只有在页面组件中写了 onPageScroll 方法,组件中的 onPageScroll 方法才生效

只有在页面组件中写了 onPageScroll 方法,组件中的 onPageScroll 方法才生效

测试过的手机:

手机没测,开发工具就过不去了

示例代码:

具体看复现步骤吧

操作步骤:

bugPage.vue

<template>  
    <bug-component></bug-component>  
    <view v-for="i in 1000" :key="i">{{ i }}1</view>  
</template>  

<script setup>  
import BugComponent from "./bugComponent.vue";  

// onPageScroll  
// 后续测试发现,只要页面文件里有 onPageScroll 这个关键词,哪怕是注释,子组件的 onPageScroll 都能生效  
</script>  

<style lang="less"></style>  

bugComponent.vue

<template>  
    <view class="bugC">  
        子组件 onPageScroll 返回值:  
        <view>{{ scroll }}</view>  
    </view>  
</template>  

<script setup>  
import { onPageScroll } from "@dcloudio/uni-app";  
import { ref } from "vue";  

const scroll = ref({});  
onPageScroll(function (res) {  
    scroll.value = res;  
});  
</script>  

<style lang="less">  
.bugC {  
    position: fixed;  
    top: 20%;  
    left: 20%;  
    right: 20%;  
    bottom: 20%;  
    background: #66ccff;  
}  
</style>  

额外发现

在 hook 里写了 onPageScroll,引入到页面中,也不行

预期结果:

组件中的 onPageScroll 方法能直接生效

实际结果:

只有在页面组件中写了 onPageScroll 方法,组件中的 onPageScroll 方法才生效

bug描述:

用的 js + vue3,组件是 <script setup> 写法

在某个组件中使用了 onPageScroll 方法,然后发现

如果引用这个组件的「页面.vue」没有 import { onPageScroll } from "@dcloudio/uni-app"的话

那么组件里的 onPageScroll 就不会生效


| 项目信息               | 值                    |
|------------------------|-----------------------|
| 产品分类               | uniapp/App            |
| PC开发环境操作系统     | Mac                   |
| PC开发环境操作系统版本 | macOS 13.4.1          |
| HBuilderX版本         | 3.94                  |
| 手机系统               | 全部                  |
| 手机系统版本           | Android 14            |
| 手机厂商               | 华为                  |
| 页面类型               | vue                   |
| vue版本                | vue3                  |
| 打包方式               | 离线                  |
| 项目创建方式           | CLI                   |
| CLI版本号              | 3.0.0-3081220230817001|

2 回复

解决了吗?


import { onLoad, onReady, onShow, onPageScroll, onReachBottom, onPullDownRefresh } from ‘@dcloudio/uni-app’
onPageScroll((e)=>{
console.log(e.scrollTop)
})
页面这样写也不生效,不要问我,页面高度6000px,是有滚动条的,而且vue2 的正常能捕获页面事件的。2024-03-26 记录于此。个人微信 lrbfly 如果有,工友解决了,请v我,我感谢您

回到顶部