列表节点已经复用,滚动时为什么还会跳动并持续涨内存?
简答题困难1012 次浏览
参考答案与解析
# 核心结论
列表节点已经复用,滚动时仍然跳动并持续涨内存,说明问题不只在节点数量。虚拟列表需要同时维护可见范围、项目高度、累计偏移、滚动锚点、异步内容变化、组件身份和资源生命周期。节点复用只能降低部分创建、布局和绘制成本;如果动态高度估算不断失真、上方项目高度变化后没有补偿滚动位置,或者复用节点对应的旧监听器、图片、请求和缓存没有释放,页面仍会跳动、卡顿并逐步占用更多内存。
# 底层机制
定高列表可以根据 scrollTop、容器高度和单项高度直接计算起止索引,再用顶部与底部占位空间维持完整滚动高度。动态高度列表则必须记录已测量高度和累计偏移。若每次滚动都从第一项开始累加,会让滚动处理随数据量增加而变慢;工程上可
