keno-lee / vue-virt-list

【持续更新中】⚡️ 一个支持vue2&vue3的高性能虚拟(滚动)列表组件 👉🏻 轻量5KB 百万数据渲染 满帧率滚动 丰富场景支持 📑 [vue虚拟列表] [vue虚拟滚动列表][vue虚拟树] [vue-virtual-list] [vue-virtual-scroll-list] [vue-virtual-scroller] [vue-virt-tree]
https://keno-lee.github.io/vue-virt-list/
MIT License
294 stars 39 forks source link

scrollToBottom 滚动失效问题 #27

Closed XueBoHua closed 6 months ago

XueBoHua commented 6 months ago

async function scrollToBottom() { scrollToOffset(getTotalSize()); const fixToBottom = () => { if (Math.abs(Math.round(reactiveData.offset + slotSize.clientSize) - Math.round(getTotalSize())) > 2) { scrollToBottom(); // 当进来了这个判断条件以后,就无法滚动到虚拟列表底部了 } fixTaskFn = null; }; ![Uploading Snipaste_2024-04-19_15-27-36.png…]()

fixTaskFn = fixToBottom;

}

XueBoHua commented 6 months ago

我已经帮你解决这个问题了,if (Math.abs(Math.round(reactiveData.offset + slotSize.clientSize) - Math.round(getTotalSize())) > 2) 进来这个判断以后,意味着接口返回的数据有可能还没有加载完毕,导致高度计算错误,在代码上加个异步任务就好了 async function scrollToBottom() { scrollToOffset(getTotalSize()); const fixToBottom = () => { if (Math.abs(Math.round(reactiveData.offset + slotSize.clientSize) - Math.round(getTotalSize())) > 2) { setTimeout(() => { scrollToBottom(); }, 0) } fixTaskFn = null; }; fixTaskFn = fixToBottom; }

keno-lee commented 6 months ago

我已经帮你解决这个问题了,if (Math.abs(Math.round(reactiveData.offset + slotSize.clientSize) - Math.round(getTotalSize())) > 2) 进来这个判断以后,意味着接口返回的数据有可能还没有加载完毕,导致高度计算错误,在代码上加个异步任务就好了 async function scrollToBottom() { scrollToOffset(getTotalSize()); const fixToBottom = () => { if (Math.abs(Math.round(reactiveData.offset + slotSize.clientSize) - Math.round(getTotalSize())) > 2) { setTimeout(() => { scrollToBottom(); }, 0) } fixTaskFn = null; }; fixTaskFn = fixToBottom; }

👍 1.0.9发布的时候发现这个问题了。后面会修复。感谢反馈

keno-lee commented 6 months ago

已修复 #28