反应页面性能不佳:突出显示鼠标悬停时表格单元格的区域

时间:2018-08-25 03:44:56

标签: reactjs

我将首先描述我要解决的问题,然后是我的幼稚解决方案。

问题:我想有一些固定大小的正方形网格。当用户将鼠标悬停在某个单元格上方时,它应突出显示周围的单元格。

我的解决方案:使用HTML table,其中td代表单元格。该表格将悬停侦听器传递到每个单元格(例如() => cellEnter(5, 7)用于(5,7)的单元格)。当单元格悬停在该处理程序上时,它会调用此处理程序,该处理程序将转到表组件,该组件计算应突出显示哪些单元格,然后更新其状态以反映突出显示哪些子项。

问题:一旦表格尺寸达到100,我的设备上的性能就会下降。我向单元格添加了shouldComponentUpdate,仅在其突出显示状态更改时才进行更新。使用React chrome工具,我可以看到只有相关的单元格正在更新,但是表本身也在更新。 RAM和CPU使用率急剧上升。

我猜对了,这是正确的假设,因为如果没有父母的重新渲染,孩子就无法重新渲染。我最初的纯JS解决方案在O(1)中有效,因为它直接更新了单元格。有没有办法在保持O(1)性能的同时在React中表示这种关系?也许问题出在其他地方,所以我删掉了我的应用程序的一部分(原谅匆忙的代码)。

Codepen here

我对React还是很陌生,感谢您的帮助。

0 个答案:

没有答案