当渲染项目列表时,如果没有提供项目,React会使用每个项目的索引作为默认密钥。
return <div>
{this.props.shows.map(show => <ShowComp title = {show.title}/>)}
</div>;
&#13;
但为什么React不使用每个项目的 JS对象引用呢?对我而言似乎是一个更安全的选项,因为如果列表顺序发生变化(与索引方法相反),它不会导致重新呈现任何项目。
我对React比较陌生,所以我确定这是一个潜在的原因。
在Angular中,ngFor
(呈现元素列表,类似于将对象映射到React元素),它还具有trackBy
配置选项(相当于key
在React)。但是,如果没有提供它,它会使用对象引用作为标识符,这似乎更自然。
答案 0 :(得分:0)
默认情况下它不使用对象引用的原因是React的开发人员选择。
请记住,它不必在所有项目中都是唯一的,它必须在每个项目的兄弟姐妹中都是唯一的。
如下所示:https://reactjs.org/docs/reconciliation.html#keys
你肯定可以使用一个不那么独特的键,它只能在兄弟姐妹中独一无二。
此外,使用对象的引用比在唯一ID中找到的大多数小整数更快?