选原生实现更优:支持实时动态高度测量、滚动锚点精准可控、体积仅2kb且自主维护。vue-virtual-scroller因估算高度易跳动、锚点偏移、15kb冗余及已停止维护,渐进淘汰。

选虚拟滚动库,核心看三点:是否支持动态高度、能否平滑处理滚动锚点、维护成本高不高。Vue-Virtual-Scroller 功能成熟但渐进式淘汰中;原生实现更轻量、可控性强,适合中高频迭代或定制化需求强的项目。
动态高度支持:Vue-Virtual-Scroller 依赖预估,原生可实时测量
真实业务中列表项高度往往不固定(比如图文混排、多行标题、响应式卡片)。Vue-Virtual-Scroller 默认要求传入 estimatedSize,靠平均值估算整体高度,滚动到未渲染区域时容易跳动或错位。虽然可通过 updateItemHeight 手动修正,但需监听元素挂载、配合 ResizeObserver,逻辑分散、易漏。
原生方案则可直接在 IntersectionObserver 或 scroll + getBoundingClientRect 中实时读取真实高度,配合缓存(如 Map 存 ID→height),天然适配动态内容。例如用户展开评论区后,只需更新对应项高度并触发视图重算,无需侵入库内部机制。
滚动定位与锚点行为:原生更精准,Vue-Virtual-Scroller 存在偏移风险
点击跳转到某一项(如搜索高亮)、返回上次滚动位置、或刷新后恢复 scrollY,都依赖精确的 offset 计算。Vue-Virtual-Scroller 的 scrollToIndex 在动态高度下可能因高度估算误差导致目标项未完全可见;其内部用的是“累计估算高度”,而非真实 DOM 布局结果。
原生实现可结合 Element.scrollIntoView({ block: 'nearest' }) 或手动计算真实 top 值(累加已知高度 + 查询 DOM),再调用 window.scrollTo,误差可控。若需保持滚动条位置稳定(比如加载新数据后不跳),也能通过记录首尾可见项索引+偏移量来精细还原。
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
最新文章
