y***@qianlima.com
y***@qianlima.com
  • 发布:2023-10-25 18:39
  • 更新:2024-03-26 17:28
  • 阅读:426

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

分类:uni-app

产品分类: 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 ,引入到页面中,也不行

预期结果:

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

实际结果:

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

bug描述:

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

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

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

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

2023-10-25 18:39 负责人:无 分享
已邀请:
7***@qq.com

7***@qq.com

解决了吗?

7***@qq.com

7***@qq.com

import {
onLoad,
onReady,
onShow,
onPageScroll,
onReachBottom,
onPullDownRefresh
} from '@dcloudio/uni-app'

onPageScroll((e)=>{

    console.log(e.scrollTop)  
})  

页面这样写也不生效,不要问我,页面高度6000px,是有滚动条的,而且vue2 的正常能捕获页面事件的。2024-03-26 记录于此。个人微信 lrbfly 如果有,工友解决了,请v我,我感谢您

要回复问题请先登录注册