reactjs - 重新渲染时反应动态键
问题描述
我有一个对象数组,我映射数组并为每个对象返回一个组件。
现在,由于各种原因,我不能使用 ID 或索引作为唯一键,所以我使用的是短 id 库,问题是每次发生任何变化并重新渲染数组时,所有组件都会获得新的 ID 和由于 Id 改变,它失去了焦点
{properties.map(property => (
<PropertyForm key={shortid.generate()}/>
))}
这是我的代码,每次特定属性更改时都会重新渲染并因此重新生成其密钥。
Anu 提示将不胜感激,谢谢
解决方案
在渲染之前,您必须为每个对象生成一个唯一的 id 以避免它。更准确地说,当将单个对象添加到数组中时,它必须生成该新对象的唯一 ID。
如果数组初始化后不改变对象的大小或顺序,可以使用map函数的key参数。
{properties.map((property, key) => (
<PropertyForm key={key}/>
))}
但是当它是可变的时它是不安全的,我鼓励你遵循前者的方式。
推荐阅读
- reactjs - Fetch请求发送大量请求后台
- c# - 游戏服务器的安全 Blazor WebAssembly 设置?
- object - 无法使用 cmake link_directories 找到目标文件
- javascript - 当我按下回车键时如何删除 CKeditor4 段落标签?
- javascript - React Material UI CardHeader 标题溢出点
- java - 延迟初始化@ManyToMany。错误是什么?
- css - LTR 到 RTL 转换
- excel - 使用 sumif 对 InputBox 中的条件求和范围
- xamarin.forms - 开箱即用的 Xamarin Android 应用在 MainActivity 中显示未定义的 Android.Support、Android.Views、Android.Content
- postgresql - 使用保存在 Postgres 中的 QGIS 项目作为 QGIS 服务器的项目文件