【发布时间】:2021-08-04 10:17:57
【问题描述】:
在我的 react 项目中,我使用 react-window 包来呈现嵌套列表。每个父 FixedSizeList 行呈现一个使用另一个 FixedSizeList 的组件。父列表目前不超过 14 行。但子列表最多可能包含 2000 行。现在我的问题是,当我尝试滚动父列表时,视口中的所有子列表项似乎都重新呈现。这对我来说有点问题,因为在我的子列表项中,我使用d3js 来绘制具有过渡效果的条形图。所以这些不必要的重新渲染给了一个整体怪异的 UI。谁能帮助我如何停止这些不必要的渲染。
Here 是我的问题的一个非常简单示例的代码和框链接。 请打开控制台日志。初始加载后,最顶层的日志应该是这样的:initial console log。
然后,如果您清除控制台并滚动父列表,您将看到如下日志:console log after parent scrolling。在这里您可以看到子列表 0 的子列表项正在重新渲染,这对我来说是不需要的。
谁能给我一个可以阻止这些重新渲染的解决方案?
*附注我没有使用备忘录,因为每一行都在自己更新 dom。
编辑
如果父列表停止向子列表传播滚动事件,我认为这个问题会解决。我尝试在父列表行中添加event.stopPropagation() 和event.stopImmediatePropagation(),但输出与之前相同。
【问题讨论】:
标签: javascript reactjs react-window