【问题标题】:What should I use as unique identifier for an element of a mapped array?我应该使用什么作为映射数组元素的唯一标识符?
【发布时间】:2016-06-15 09:09:22
【问题描述】:

我读过somewhere 应该使用这个

{someArray.map(function (element) {
  return (
    <span key={element.id}>{element.name}</span>
  );
})}

而不是这个

{someArray.map(function (element, key) {
  return (
    <span key={key}>{element.name}</span>
  );
})}

显然,原因是key 不一定保留数组元素的顺序,因为它没有“绑定”到数组元素。

因此,与使用元素 id element.id 相比,React 显然需要做更多的工作,并且可能会破坏渲染元素的顺序。

The docs好像和上面的一致:

在实践中,找到一把钥匙并不难。大多数时候, 您要显示的元素已经有一个唯一的 id。

作为一个一直使用key 的人,我正在寻找一些我不应该使用的证据。

有人有例子吗?或者有没有人对这两个块进行基准测试,看看它们是否在性能方面有所不同?

【问题讨论】:

    标签: javascript arrays reactjs


    【解决方案1】:

    是否进行了一些研究,第二种方法很好当 React 协调键控子级时,它将确保任何具有键的子级将被重新排序(而不是破坏)或销毁(而不是重用)。 密钥应该是稳定的、可预测的和唯一的。不稳定的键(如 Math.random() 生成的键)会导致不必要地重新创建许多节点,这可能会导致性能下降和子组件中的状态丢失。

    【讨论】:

    • 谢谢,这个演讲很有用!
    猜你喜欢
    • 2020-03-25
    • 2023-03-17
    • 1970-01-01
    • 2016-10-19
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2015-06-08
    相关资源
    最近更新 更多