无限滚动列表如何同时控制渲染规模、滚动稳定性与内存占用?
简答题困难481 次浏览
参考答案与解析
# 核心结论
无限滚动列表要同时限制可达数据、渲染节点、组件实例、事件监听、观察器、图片资源和并发请求,而不能只把不可见节点设置为隐藏。常见方案是虚拟化:只渲染视口前后的一小段缓冲区,用顶部和底部占位空间模拟完整列表高度。固定高度列表可以直接由滚动偏移计算可见索引;动态高度列表需要维护已测量高度和未测量项估值,并在真实高度替换估值时通过视觉锚点补偿滚动位置。数据缓存还必须设置上限和淘汰规则,否则节点虽少,脚本堆仍会持续增长。
# 底层机制
固定高度列表中,可见起始索引可近似由滚动偏移除以项目高度得到,结束索引再加上视口容量与缓冲区。动态高度列表则要回答两个问题:某个项目之前累计多高,以及某个滚动偏移对应哪个项目。数据量不大
