uni-app 在nvue vue3 ts setup中使用scroll-view的bug
uni-app 在nvue vue3 ts setup中使用scroll-view的bug
| 项目属性 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本号 | win10 |
| 手机系统 | Android |
| 手机系统版本号 | Android 7.1.1 |
| 手机厂商 | 模拟器 |
| 手机机型 | 无 |
| 页面类型 | nvue |
| vue版本 | vue3 |
| 打包方式 | 离线 |
| 项目创建方式 | CLI |
| CLI版本号 | 3.0.0-alpha-3040620220415002 |
示例代码:
-
新建一个自定组件a.vue:
<script lang="ts" setup> <template> <view><slot></slot></view> </template> </script> -
新建一个页面test.nvue
<script lang="ts" setup> import avue from "./a.vue" <template> <view> <avue> <scroll-view scroll-y style="height:100rpx"> <view style="height:1000rpx;background:red"></view> </scroll-view> </avue> </view> </template> </script>
操作步骤:
- 新建一个自定组件a.vue:
- 新建一个页面test.nvue 如上代码。
- 在运行到安卓机上演示。
预期结果:
可以滚动内容
实际结果:
无法滚动,只出现一个滚动条。
bug描述:
首先这个bug我已经远程和你们的技术人员演示过,确认存在的bug.你们技术人员让我重新开个ask提交。
- 在组件插槽中,使用scroll-view,
- 不管如何定义宽高,滚动无效。可以看到有滚动条,但无法滚动。
- 在真机ios上测试没有问题。
更多关于uni-app 在nvue vue3 ts setup中使用scroll-view的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
不修复么?
更多关于uni-app 在nvue vue3 ts setup中使用scroll-view的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用 nvue 页面,并结合 Vue 3 和 TypeScript 的 setup 语法时,可能会遇到 scroll-view 组件的一些问题或 bug。以下是一些常见的问题及其可能的解决方案:
1. scroll-view 无法滚动
-
问题描述: 在
nvue页面中,scroll-view组件可能无法正常滚动。 -
解决方案:
- 确保
scroll-view的高度设置正确。scroll-view需要明确的高度才能滚动。 - 检查
scroll-view的子元素是否超出了scroll-view的高度。 - 在
nvue中,scroll-view的滚动行为可能与vue页面有所不同,确保你理解nvue的布局机制。
<template> <scroll-view style="height: 100vh;"> <view v-for="item in items" :key="item.id">{{ item.text }}</view> </scroll-view> </template> - 确保
2. scroll-view 的 scroll-top 或 scroll-left 不生效
-
问题描述: 在
nvue页面中,scroll-view的scroll-top或scroll-left属性可能无法正确设置。 -
解决方案:
- 确保
scroll-view的scroll-top或scroll-left属性是动态绑定的,并且在数据更新后重新渲染。 - 使用
ref或reactive来管理scroll-top或scroll-left的值,并在需要时更新。
<template> <scroll-view :scroll-top="scrollTop" style="height: 100vh;"> <view v-for="item in items" :key="item.id">{{ item.text }}</view> </scroll-view> </template> <script setup> import { ref } from 'vue'; const scrollTop = ref(0); // 在需要时更新 scrollTop function scrollToTop() { scrollTop.value = 0; } </script> - 确保
3. scroll-view 的 scroll 事件不触发
-
问题描述: 在
nvue页面中,scroll-view的scroll事件可能无法正常触发。 -
解决方案:
- 确保
scroll-view的scroll事件绑定正确,并且事件处理函数在setup中定义。 - 检查
scroll-view的滚动区域是否足够大,以确保滚动事件能够触发。
<template> <scroll-view @scroll="handleScroll" style="height: 100vh;"> <view v-for="item in items" :key="item.id">{{ item.text }}</view> </scroll-view> </template> <script setup> function handleScroll(event) { console.log('Scroll event:', event); } </script> - 确保
4. scroll-view 在 nvue 中的性能问题
-
问题描述: 在
nvue页面中,scroll-view可能会遇到性能问题,尤其是在渲染大量子元素时。 -
解决方案:
- 使用
nvue的list组件代替scroll-view,list组件在nvue中具有更好的性能表现。 - 如果必须使用
scroll-view,考虑使用虚拟列表技术来优化性能。
<template> <list> <cell v-for="item in items" :key="item.id"> <text>{{ item.text }}</text> </cell> </list> </template> - 使用
5. scroll-view 在 nvue 中的样式问题
-
问题描述: 在
nvue页面中,scroll-view的样式可能与vue页面中的表现不一致。 -
解决方案:
nvue使用的是原生渲染,样式支持与vue页面有所不同。确保你使用的是nvue支持的样式属性。- 使用
flex布局来管理scroll-view及其子元素的布局。
<template> <scroll-view style="flex: 1;"> <view style="flex-direction: row;"> <view v-for="item in items" :key="item.id">{{ item.text }}</view> </view> </scroll-view> </template>
6. scroll-view 在 nvue 中的兼容性问题
-
问题描述: 在
nvue页面中,scroll-view可能在某些设备或平台上表现不一致。 -
解决方案:
- 确保你测试了
nvue页面在目标平台和设备上的表现。 - 如果遇到特定平台的兼容性问题,考虑使用平台特定的代码或条件编译来处理。
<template> <scroll-view :style="{ height: platform === 'ios' ? '100vh' : '100%' }"> <view v-for="item in items" :key="item.id">{{ item.text }}</view> </scroll-view> </template> <script setup> const platform = uni.getSystemInfoSync().platform; </script> - 确保你测试了

