当时想到的方案大致如下:
采用懒加载+分页(前端维护懒加载的数据分发和分页)
使用虚拟滚动技术(目前react的antd4.0已支持虚拟滚动的select长列表)
懒加载和分页方式一般用于做长列表优化,...虚拟滚动技术也可以用来优化长列表, 其核心思路就是每次只渲染可视区域的列表数,当滚动后动态的追加元素并通过顶部padding来撑起整个滚动内容,实现思路也非常简单....初级工程师的方案
直接从后端请求数据, 渲染到页面的硬编码方案,思路如下:
代码可能是这样的:
请求后端数据:
fetch(`${SERVER_URL}/api/getMock`).then(res =..., 代码已经基本可用了, 下面来介绍具体实现方案:
懒加载+分页方案 懒加载的实现主要是通过监听窗口的滚动, 当某一个占位元素可见之后去加载下一个数据,原理如下:
这里我们通过监听window的scroll...事件以及对poll元素使用getBoundingClientRect来获取poll元素相对于可视窗口的距离, 从而自己实现一个懒加载方案.