 
                                        
                                    
                                    - 发布:2023-10-25 18:39
- 更新:2024-03-26 17:28
- 阅读:818
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS 13.4.1
HBuilderX版本号: 3.94
手机系统: 全部
手机系统版本号: Android 14
手机厂商: 华为
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: CLI
CLI版本号: 3.0.0-3081220230817001
测试过的手机:
示例代码:
                                    
                                    
                                        具体看复现步骤吧
                                     
                                
                                                                                                具体看复现步骤吧
操作步骤:
                                    
                                        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 ,引入到页面中,也不行
                                     
                                
                                                                                                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 方法,组件中的 onPageScroll 方法才生效
                                     
                                
                                                            只有在页面组件中写了 onPageScroll 方法,组件中的 onPageScroll 方法才生效
bug描述:
用的 js + vue3,组件是 <script setup> 写法
在某个组件中使用了 onPageScroll 方法,然后发现
如果引用这个组件的「页面.vue」没有 「 import { onPageScroll } from "@dcloudio/uni-app"」的话
那么组件里的 onPageScroll 就不会生效
 
             
             
             
			 
            
2 个回复
7***@qq.com
解决了吗?
7***@qq.com
import {
onLoad,
onReady,
onShow,
onPageScroll,
onReachBottom,
onPullDownRefresh
} from '@dcloudio/uni-app'
onPageScroll((e)=>{
页面这样写也不生效,不要问我,页面高度6000px,是有滚动条的,而且vue2 的正常能捕获页面事件的。2024-03-26 记录于此。个人微信 lrbfly 如果有,工友解决了,请v我,我感谢您