在我的反应应用中,我在渲染方法中渲染一个项目列表,每个项目都有唯一且确定的密钥。但是,每当调用render时,都会再次调用每个项的构造函数,从DOM中删除旧项并添加一个新项。为什么会这样?如何使每个子组件不重新渲染?
<Rect key={`${i}-${j}-rect`} ...
我认为为每个项目提供一个唯一的密钥会阻止这一点,但列表中的每个项目仍然会重新渲染。
答案 0 :(得分:0)
没关系,原来我没有正确分配钥匙。我将我的密钥更改为唯一标识符(在这种情况下,每个数据点的日期),现在每次调用渲染时都不会丢弃子项。将密钥分配给组件时,请确保尝试避免使用数组索引。
答案 1 :(得分:0)
这就是我要告诉你的。可能就是这样。如果它们具有相同的键,则列表中的项目只应重新呈现