我有一个对象数组,我在数组中进行映射并为每个对象返回一个组件。
现在,由于种种原因,我无法使用ID或索引作为唯一键,所以我使用的是短ID库,问题是每次更改时,它都会重新分发数组所有组件。新ID和自ID更改以来,它失去了焦点
{properties.map(property => (
<PropertyForm key={shortid.generate()}/>
))}
这是我的代码,每当特定属性更改时,它就会重新呈现,并因此重新生成其密钥。
感谢Anu的提示,谢谢
答案 0 :(得分:0)
在渲染之前,必须为每个对象生成唯一的ID以避免它。 更准确地说,将单个对象添加到数组时,它必须生成该新对象的唯一ID。
如果在数组初始化后不更改对象的大小或顺序,则可以使用map函数的key参数。
{properties.map((property, key) => (
<PropertyForm key={key}/>
))}
但是它可变时是不安全的,我鼓励您遵循前者的方法。