【问题标题】:Why doesn't React use the object reference as key?为什么 React 不使用对象引用作为键?
【发布时间】:2018-05-13 18:49:20
【问题描述】:

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

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

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

我对 React 比较陌生,所以我确信有一个潜在的原因。

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

【问题讨论】:

    标签: javascript reactjs jsx


    【解决方案1】:

    之所以默认不使用对象的引用,全是 React 开发者的选择。

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

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

    您绝对可以使用仅在兄弟姐妹之间唯一的不那么唯一的密钥。

    另外,使用对象的引用是否比唯一 ID 中的大多数小整数更快?

    【讨论】:

    • 感谢您的回复!我得到了“兄弟姐妹之间的唯一部分”,但我仍然不明白为什么我不能使用对象引用作为键,以及为什么我必须使用字符串或数字。每个对象的对象引用都是继承唯一的。也许我只是问错了问题?
    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多