Javascript 在reactjs中呈现大型状态数据

Javascript 在reactjs中呈现大型状态数据,javascript,reactjs,Javascript,Reactjs,我的客户给我一个有12k条记录(大约20->30MB)的表,然后他们想在屏幕上显示所有记录,此时他们不想分页。 加载页面时,我调用api并更新组件的新状态,但我需要大约10秒来完成渲染,当我滚动此列表时,速度也很慢。 我的问题是如何加快速度? 这是第二种情况,当我尝试使用33k记录(约51MB)时,内存泄漏发生,出现白色屏幕。 我的问题是,国家的限制是什么?我要用更大的数据更新状态吗?对于第一个问题,它变慢的原因是因为您正在渲染的DOM是巨大的,所以它消耗了太多内存,因此您的浏览器开始占用RAM

我的客户给我一个有12k条记录(大约20->30MB)的表,然后他们想在屏幕上显示所有记录,此时他们不想分页。 加载页面时,我调用api并更新组件的新状态,但我需要大约10秒来完成渲染,当我滚动此列表时,速度也很慢。 我的问题是如何加快速度?

这是第二种情况,当我尝试使用33k记录(约51MB)时,内存泄漏发生,出现白色屏幕。
我的问题是,国家的限制是什么?我要用更大的数据更新状态吗?

对于第一个问题,它变慢的原因是因为您正在渲染的DOM是巨大的,所以它消耗了太多内存,因此您的浏览器开始占用RAM,您应该实现虚拟滚动,以便在DOM中只加载可见元素

对于第一个问题,它变慢的原因是,您正在渲染的DOM是巨大的,因此它会消耗太多内存,因此您的浏览器开始占用RAM,您应该实现虚拟滚动,以便在DOM中只加载可见元素

首先,您需要的是无限滚动。 这就像Netflix或Prime Videos所做的一样。 首先,您调用20条记录,当您滚动到底部时,它将调用20条以上的记录,依此类推。 因此,它将从20开始,当您即将到达滚动条的底部时,您将调用API以获取更多的20,并将其添加到旧列表中

现在,如果您滚动了很多次,并且有2000多条记录,并且速度变慢了,那么请使用react窗口或react虚拟化包,这样做只是渲染您在dom中查看的内容。
查看此视频以供参考

首先,您需要的是无限滚动。 这就像Netflix或Prime Videos所做的一样。 首先,您调用20条记录,当您滚动到底部时,它将调用20条以上的记录,依此类推。 因此,它将从20开始,当您即将到达滚动条的底部时,您将调用API以获取更多的20,并将其添加到旧列表中

现在,如果您滚动了很多次,并且有2000多条记录,并且速度变慢了,那么请使用react窗口或react虚拟化包,这样做只是渲染您在dom中查看的内容。
查看此视频以供参考

谢谢。我认为这是最好的主意,但在这个时候,我仍然在想,我应该在客户机中的哪里存储33k记录?或者,每当我滚动从API获取范围数据时,加载速度就会变慢?在客户端本身存储33k条记录从来都不是一个好主意。捆绑规模将是一个网站和一个坏的整体体验巨大。我是一名前端开发人员,但我认为您仍然可以轻松地在firebase中快速创建记录,并将记录存储在那里,然后通过API调用从中获取记录。然后使用像react infinity scroller这样的软件包,一次滚动20条记录,并保持滚动。我绝对知道并看到了,我建议他们使用分页或显示带有拥抱数据的消息警告,因为我知道他们不想支付更多的钱。再次感谢,我将接受这个答案。谢谢。我认为这是最好的主意,但在这个时候,我仍然在想,我应该在客户机中的哪里存储33k记录?或者,每当我滚动从API获取范围数据时,加载速度就会变慢?在客户端本身存储33k条记录从来都不是一个好主意。捆绑规模将是一个网站和一个坏的整体体验巨大。我是一名前端开发人员,但我认为您仍然可以轻松地在firebase中快速创建记录,并将记录存储在那里,然后通过API调用从中获取记录。然后使用像react infinity scroller这样的软件包,一次滚动20条记录,并保持滚动。我绝对知道并看到了,我建议他们使用分页或显示带有拥抱数据的消息警告,因为我知道他们不想支付更多的钱。再次感谢,我将接受这个答案。