重新渲染时反应动态键

时间:2019-07-10 22:09:56

标签: reactjs

我有一个对象数组,我在数组中进行映射并为每个对象返回一个组件。

现在,由于种种原因,我无法使用ID或索引作为唯一键,所以我使用的是短ID库,问题是每次更改时,它都会重新分发数组所有组件。新ID和自ID更改以来,它失去了焦点

 {properties.map(property => (
            <PropertyForm key={shortid.generate()}/>
 ))}

这是我的代码,每当特定属性更改时,它就会重新呈现,并因此重新生成其密钥。

感谢Anu的提示,谢谢

1 个答案:

答案 0 :(得分:0)

在渲染之前,必须为每个对象生成唯一的ID以避免它。 更准确地说,将单​​个对象添加到数组时,它必须生成该新对象的唯一ID。

如果在数组初始化后不更改对象的大小或顺序,则可以使用map函数的key参数。

 {properties.map((property, key) => (
            <PropertyForm key={key}/>
 ))}

但是它可变时是不安全的,我鼓励您遵循前者的方法。