为什么不反应使用对象引用作为键?

时间:2017-11-29 23:04:13

标签: javascript reactjs jsx

当渲染项目列表时,如果没有提供项目,React会使用每个项目的索引作为默认密钥。



return <div>
    {this.props.shows.map(show => <ShowComp title = {show.title}/>)}
</div>;
&#13;
&#13;
&#13;

但为什么React不使用每个项目的 JS对象引用呢?对我而言似乎是一个更安全的选项,因为如果列表顺序发生变化(与索引方法相反),它不会导致重新呈现任何项目。

我对React比较陌生,所以我确定这是一个潜在的原因。

在Angular中,ngFor(呈现元素列表,类似于将对象映射到React元素),它还具有trackBy配置选项(相当于key在React)。但是,如果没有提供它,它会使用对象引用作为标识符,这似乎更自然。

1 个答案:

答案 0 :(得分:0)

默认情况下它不使用对象引用的原因是React的开发人员选择。

请记住,它不必在所有项目中都是唯一的,它必须在每个项目的兄弟姐妹中都是唯一的。

如下所示:https://reactjs.org/docs/reconciliation.html#keys

你肯定可以使用一个不那么独特的键,它只能在兄弟姐妹中独一无二。

此外,使用对象的引用比在唯一ID中找到的大多数小整数更快?