私はこの質問が以前に尋ねられたことは知っていますが、ここで何が起こっているのか分かりません。私はナビゲーションを作成するためにReactコンポーネントにマッピングしているオブジェクトの配列を持っています:いくつかの要素は子を持つことができるので、これらの要素に対して2番目の.map関数を追加しています。 すべてが正常に動作しますが、2つ目の子要素は「同じキーを持つ2人の子に遭遇する」ため表示されません。混乱...誰も理由を説明できますか?私は現在ユニークなキーとしてタイトルを使用しています。React:flattenChildren(...):同じキーを持つ2人の子供が出会った
は、ここに私の項目の配列
let navItems = [
{
title: "Home",
href: "/",
children: []
},
{
title: "Evaluations",
href: "/evaluations",
children: [
{
id: 1,
title: "List all evalutions",
href: "/"
},
{
id: 2,
title: "Planner",
href: "/"
},
]
}
]
であり、ここでのコードです:あなたが繰り返しでアイテムをレンダリングしている間は、各要素に固有のkey
を提供する必要があります
let items = this.props.items.map((item) => {
if(item.children.length > 0) {
return item.children.map((child) => {
return <li className="menu--item" key={ item.title }>
<a href={ item.href } className="menu--link">{ item.title }</a>
<ul className="dropdown">
<li key={ child.title }><a href="{ child.href}">{ child.title }</a></li>
</ul>
</li>
})
} else {
return <li className="menu--item" key={ item.title }>
<a href={ item.href } className="menu--link">{ item.title }</a>
</li>
}
})
ああ、私は同じ項目を二度ループしていました、あなたは正しいです。私はこの解決策の原因が本当に配列にIDを追加したくない、それを無料のままにしたいと思っています。ありがとうドノバン。 –