uni-app nvue的list组件 偶现下拉刷新后再也无法触发上拉加载loadmore事件
uni-app nvue的list组件 偶现下拉刷新后再也无法触发上拉加载loadmore事件
示例代码:
loadmore事件逻辑:pageIndex++ 分页拉取数据 在原有的数据数组基础上concat此次拉取的数据
refresh事件逻辑:pageIndex重置为1 数据重置为空数组 拉取第一页数据
逻辑肯定没问题,之前用vue页面配合onreachBottom和onPullDownRefresh从来没有出现过这种问题。
而且大部分情况下能正常工作 ,即使用了下拉刷新后,再次拉到底部也是能正常重新触发loadmore的,但试验了几个改造过后的nvue页面,发现在android端,如果对list的下拉刷新操作的非常缓慢,很长时间才松手,很容易造成之后就不能触发loadmore了,且复现率相对较高(官方的新闻模板也是如此),但并不是百分百复现。
操作步骤:
在使用list的nvue页面 手动下拉刷新list组件
预期结果:
数据回到首页数据,上拉至list底部可以触发loadmore事件,加载更多数据
实际结果:
未触发loadmore事件
bug描述:
使用nvue的list组件,设置高度为屏幕高度-顶部固定元素高度。
为list添加refresh组件。为list添加了@loadmore事件 和@refresh事件
大部分情况下 refresh和loadmore都可以正常工作,
偶现缓慢下拉触发refresh后,就再也无法触发loadmore事件了。
目前ios尝试各种花式下拉刷新list后均未发现此问题。但在android模拟器和真机华为nova5plus上均发现了此问题。
且为 偶现 无法判断为何不触发loadmore事件
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC版本号 | win10 |
HBuilderX | 正式 |
HBuilderX版本 | 2.7.5 |
手机系统 | Android |
手机版本号 | Android 10 |
手机厂商 | 华为 |
手机机型 | nova5plus |
页面类型 | nvue |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app nvue的list组件 偶现下拉刷新后再也无法触发上拉加载loadmore事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请参考文档:重置 loadmore, https://uniapp.dcloud.net.cn/component/list
更多关于uni-app nvue的list组件 偶现下拉刷新后再也无法触发上拉加载loadmore事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
需要增加重置resetLoadmore 方法,使用流程官网写的不好,请看如下:
async loadMore() {
// 你的加载数据api 接口 自己做点什么
this.resetLoadmore(); //调用重置方法
},
// 重置 loadmore
resetLoadmore() {
this.$refs[“list”].resetLoadmore();
},
这个重置方法 我感觉 就是他目前内部的bug 可能目前无法解决 后续肯定会内部优化掉 只不过会等上个5、6年吧
报错方法不识别啊这,this.$refs[“list”].resetLoadmore is not a function
回复 1***@qq.com: <list ref="list"> </list> 没有加吧 ,你这技术太虚弱了
解决了这个困扰了好久的问题,原来是要重置啊,感谢感谢
请问解决了吗?我也遇到这个问题了
我也遇到这个问题了
已修复某些操作导致上拉无法加载数据的问题
github:https://github.com/dcloudio/uni-template-news
这个问题是nvue list组件在Android平台上的一个已知问题,主要与下拉刷新操作时的触发机制有关。当用户缓慢下拉刷新时,可能会导致list组件内部的状态未能正确重置,从而影响了后续loadmore事件的触发。
解决方案建议:
- 在refresh事件处理完成后,手动调用list组件的resetLoadmore方法:
this.$refs.list.resetLoadmore()
- 确保在refresh事件处理中正确重置了分页状态和数据:
handleRefresh() {
this.pageIndex = 1
this.dataList = []
// 获取数据后
this.$nextTick(() => {
this.$refs.list.resetLoadmore()
})
}