uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃
uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 14.6 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
手机系统:Android
手机系统版本号:Android 12
手机厂商:华为
手机机型:mate40 pro
页面类型:vue
vue版本:vue2
打包方式:云端
示例代码:
崩溃日志:
com.taobao.weex.common.WXRuntimeException: getImgLoaderAdapter() == null at com.taobao.weex.ui.component.WXImage.recycled(Unknown Source:58) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at com.taobao.weex.ui.view.listview.adapter.ListBaseViewHolder.recycled(Unknown Source:18) at com.taobao.weex.ui.component.list.BasicListComponent.onViewRecycled(Unknown Source:30) at com.taobao.weex.ui.component.list.BasicListComponent.onViewRecycled(Unknown Source:2) at com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter.onViewRecycled(Unknown Source:4) at com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter.onViewRecycled(Unknown Source:2) at androidx.recyclerview.widget.RecyclerView$Recycler.dispatchViewRecycled(RecyclerView.java:6769) at androidx.recyclerview.widget.RecyclerView$Recycler.addViewHolderToRecycledViewPool(RecyclerView.java:6538) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleCachedViewAt(RecyclerView.java:6419) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:6468) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleView(RecyclerView.java:6369) at androidx.recyclerview.widget.RecyclerView$LayoutManager.removeAndRecycleView(RecyclerView.java:8901) at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycleFromEnd(StaggeredGridLayoutManager.java:1959) at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycle(StaggeredGridLayoutManager.java:1788) at androidx.recyclerview.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1718) at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollBy(StaggeredGridLayoutManager.java:2180) at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollVerticallyBy(StaggeredGridLayoutManager.java:2039) at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1841) at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5302) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1599) at android.view.Choreographer.doCallbacks(Choreographer.java:1263) at android.view.Choreographer.doFrame(Choreographer.java:1122) at android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:1400) at android.os.Handler.dispatchMessage(Handler.java:117) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:293) at android.app.ActivityThread.loopProcess(ActivityThread.java:9986) at android.app.ActivityThread.main(ActivityThread.java:9975) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1240)
操作步骤:
nvue list 嵌套 waterfall
预期结果:
正常
实际结果:
滑动概率崩溃
bug描述:
nvue list 嵌套 waterfall 滑动过程中有概率崩溃
更多关于uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
weex已经淘汰,nvue不再维护。建议改用vue,或者升级uni-app x。如果坚持nvue,那可能需要点论坛右上角的付费技术支持解决
更多关于uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
有没有解决bug的方向 是因为 list 嵌套waterfall 回收的问题吗
在处理 uni-app
中 nvue
列表嵌套瀑布流(waterfall)组件在滑动过程中可能出现的崩溃问题时,通常这类问题涉及到内存管理、渲染性能以及组件间通信的异常。虽然具体崩溃原因可能多种多样,但以下是一些可能的代码示例和调优策略,旨在帮助你定位并解决问题。
1. 优化列表渲染性能
确保列表的渲染尽可能高效,避免在滑动过程中频繁重绘。可以使用虚拟列表技术来减少渲染的DOM节点数量。
// 虚拟列表示例
<template>
<list :space="20" :height="windowHeight">
<cell v-for="(item, index) in visibleItems" :key="index">
{{ item.name }}
</cell>
</list>
</template>
<script>
export default {
data() {
return {
windowHeight: 0,
allItems: [],
visibleItems: []
};
},
mounted() {
this.windowHeight = uni.getSystemInfoSync().windowHeight;
this.loadItems();
this.$watch('scrollPosition', this.handleScroll);
},
methods: {
loadItems() {
// 模拟加载数据
this.allItems = Array.from({ length: 1000 }, (_, i) => ({ name: `Item ${i + 1}` }));
this.computeVisibleItems();
},
computeVisibleItems() {
// 根据滚动位置计算可见项
const startIndex = Math.floor(this.scrollPosition / this.windowHeight) * 3; // 假设每屏显示3项
const endIndex = startIndex + 6; // 预留一些缓冲
this.visibleItems = this.allItems.slice(startIndex, endIndex);
},
handleScroll(newVal) {
this.scrollPosition = newVal;
this.computeVisibleItems();
}
}
};
</script>
2. 监控内存使用
在滑动过程中监控应用的内存使用情况,确保没有内存泄漏。可以使用 uni.getMemoryInfoSync()
来获取当前内存信息。
setInterval(() => {
const memoryInfo = uni.getMemoryInfoSync();
console.log('Memory Usage:', memoryInfo);
}, 5000); // 每5秒检查一次内存使用情况
3. 错误捕获和日志记录
增加全局错误捕获,记录异常信息,有助于后续分析崩溃原因。
uni.onError((err) => {
console.error('App Error:', err);
// 发送错误日志到服务器
});
4. 更新uni-app和依赖库
确保你使用的 uni-app
和相关依赖库是最新版本,因为新版本中可能已经修复了一些已知的bug。
通过上述方法,你可以更有效地定位和解决 uni-app
中 nvue
列表嵌套瀑布流组件在滑动过程中的崩溃问题。如果问题依旧存在,建议详细检查崩溃日志,或者向 uni-app
社区寻求更具体的帮助。