钥匙是唯一的,但仍然出现“遇到两个孩子用相同的钥匙”

Posted

技术标签:

【中文标题】钥匙是唯一的,但仍然出现“遇到两个孩子用相同的钥匙”【英文标题】:Key is unique but still getting "Encountered two children with the same key" 【发布时间】:2020-01-08 12:44:37 【问题描述】:

我有以下数据:

const huntersData = [
    
        id: 1,
        name: 'A',
        image: '',
    ,
    
        id: 2,
        name: 'B',
        image: '',
    ,
    
        id: 3,
        name: 'C',
        image: '',
    ,
    
        id: 4,
        name: 'D',
        image: '',
    
]

export default huntersData

以及以下组件:

import React from 'react'

export default function Hunters(props) 
    return (
        <div>
            
                props.hunters.map(hunter => (
                    <div key="hunter.id" onClick=() => props.selectHunter(hunter)>
                        <img src=hunter.image alt=hunter.name  />
                        <p>hunter.name</p>
                    </div>
                ))
            
        </div>
    )

并调用它:

<Hunters
    hunters=this.state.hunters
    selectedHunter=this.state.selectedHunter
    selectHunter=this.selectHunter
/>

但我收到以下错误: Encountered two children with the same key, hunter.id. 我什至尝试使用 index 作为键,但仍然遇到同样的错误。根据数据对象,键是唯一的,我做错了什么?

【问题讨论】:

What do curly braces mean in JSX (React)?的可能重复 【参考方案1】:

您使用了始终相同的字符串文字"hunter.id"。您需要使用实际的 id 作为键:

key=hunter.id

如果您打算使用格式字符串,正确的语法应该是:

key=`$hunter.id`

但这不是必需的,因为密钥仅由 id 本身组成。

【讨论】:

我真是太愚蠢了,谢谢!当我被允许时,我会接受这个提议。

以上是关于钥匙是唯一的,但仍然出现“遇到两个孩子用相同的钥匙”的主要内容,如果未能解决你的问题,请参考以下文章

检查钥匙是否关闭?

重新安装应用程序后,钥匙串存储的密码仍然可用

即使在钥匙串安全之后,仍然可以在代码中设置凭据

如何在模拟器中重置钥匙串?

iphone钥匙串项目在应用程序卸载后仍然存在?

wifi万能钥匙上边有个小钥匙的图标为啥解不开啊