栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为组件提供唯一键时,可以使用Math.random()生成那些键吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为组件提供唯一键时,可以使用Math.random()生成那些键吗?

每当组件的关键更改发生时,React都会创建一个新的组件实例,而不是更新当前实例,因此,为了提高性能,使用Math.random()至少可以说是次优的。

同样,如果您将以任何方式对组件列表进行重新排序,则使用索引作为键
无济于事,因为React协调器将无法仅在与组件相关联的现有DOM节点周围移动,而是必须重新-为每个列表项创建DOM节点,它们将再次具有次佳的性能。

但是重申一下,这仅在您要对列表进行重新排序时才是问题,因此,在您的情况下,如果您确定 不会 以任何方式 对列表进行重新排序
,则可以安全地将index用作键。

但是,如果您确实打算对列表进行重新排序(或者只是为了安全起见),那么我将为您的实体生成唯一的ID-如果没有可以使用的预先存在的唯一标识符。

添加ID的一种快速方法是仅 在首次接收(或创建)列表时 映射列表并将索引分配给每个项目。

const myItemsWithIds = myItems.map((item, index) => { ...item, myId: index });

这样,每个项目都会获得唯一的静态ID。

tl; dr如何为新人找到钥匙找到答案

  1. 如果您的列表项具有唯一ID(或其他唯一属性),请使用该ID作为键

  2. 如果可以组合列表项中的属性以创建唯一值,请将该组合用作键

  3. 如果以上方法均无效,但您可以保证不会以任何方式对列表进行重新排序,则可以将数组索引用作键,但是最好在列表出现时将自己的ID添加到列表项中首次收到或创建(请参见上文)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号