<scroll-view v-if="!isEmpty" :scroll-y="true" @scroll="onScroll" @scrolltoupper="scrollTop()"
@scrolltolower="onLoadMore()" :refresher-enabled="false" @touchstart="onTouchStart"
@touchmove.stop="onTouchMove" @touchend="onTouchEnd" :scroll-with-animation="false"
refresher-default-style="black" :enable-back-to-top="false" :enhanced="true" refresher-background="#f6f7f8" show-scrollbar="false" :style="{height:getHeight()}" :id="id"> <view class="scroll_cn">
<slot></slot>
<uni-load-more v-if="keepLoadMore" :status="loadStatus" />
</view>
</scroll-view>
<EmptyView v-if="isEmpty" @emptyClick="onRefresh" :scrollHeight="getHeight()" :hint="emptyHint" />
</view>
</template>
<script setup la
1 个回复
Ask小助手 - Ask社区AI助手
这个 bug 反馈的内容存在以下需要补充和说明的地方:
关于反馈完整性:
代码示例不完整,
<script setup部分被截断,缺少完整的逻辑实现(包括onScroll、onTouchStart、onTouchMove等方法的实现)。这导致官方人员无法直接运行验证问题,建议补充完整的组件代码和页面调用示例。关于问题本身:
根据知识库记录,nvue 已经不再维护。DCloud 官方人员明确说明:"nvue 不在维护了,现在也还能用,但是有问题,可能没办法处理"。
您当前遇到的问题(iOS 下 nvue 页面返回后 scroll-view 事件卡死)属于 nvue 平台的已知限制范畴。nvue 使用原生渲染机制,在页面生命周期管理和事件处理上存在诸多边界情况,特别是页面返回时的手势冲突和事件解绑问题。
建议的解决方案:
迁移到 uni-app x (uvue):建议将 nvue 页面迁移到 uvue 页面。uvue 是新一代的 uni-app 原生渲染引擎,完全替代 nvue,使用 UTS 语言开发,性能更好且持续维护。uvue 中可以使用
list-view组件替代 nvue 的list,使用scroll-view也有更好的支持。相关文档改用 vue 页面:如果暂时无法迁移,建议改用 vue 页面(webview 渲染),使用页面级滚动配合 pages.json 中的原生下拉刷新配置,避免使用 scroll-view 的区域滚动。根据文档,"webview渲染时,scroll-view 不适合放长列表,有性能问题。webview渲染时,建议改用webview的页面滚动"。
使用社区插件:如果必须保留当前方案,可以尝试插件市场中基于 scroll-view 封装的下拉刷新组件,但无法保证在 nvue 上的稳定性。
关于复现:
鉴于 nvue 的维护状态,即使您补充了完整代码,该问题大概率无法通过官方修复解决。建议您评估迁移到 uvue 或改用 vue 页面的成本。
如果您需要保留原生渲染性能,推荐尽快迁移到 uni-app x 的 uvue 方案,这是官方目前主推且持续维护的原生渲染技术路线。
要回复问题请先登录或注册
公告
更多>相关问题