提问人:Fateme Ghalandari 提问时间:8/28/2023 更新时间:8/28/2023 访问量:33
如何在没有 key prop 警告的情况下拥有数组的嵌套映射?
How to have nested maps of an array without the key prop warning?
问:
我有一个数据数组:
const arr = [
{
title: "title1",
content: [
{
id: "home",
name: "Home",
},
{
id: "services",
name: "services",
},
{
id: "Appointments",
name: "Appointments",
},
],
},
{
title: "title2",
content: [
{
id: "about us",
name: "about us",
},
{
id: "contact",
name: "contact",
},
{
id: "blog",
name: "blog",
},
],
},
];
我想绘制所有这些地图。
我尝试过使用和添加到每个标签nested maps
key prop
{arr.map((element) => (
<div key={element.name}>
<h4 key={element.name}>{element.title}</h4>
<ul key={element.name}>
{element.content.map((index) => (
<li key={index.id}>
{index.name}
</li>
))}
</ul>
</div>
))}
我试过使用,它工作正常并显示数组,但我收到了此警告nested maps
警告:列表中的每个子项都应该有一个唯一的“键”道具。
我应该如何解决此警告?
答:
0赞
Akash kandasamy
8/28/2023
#1
{arr.map((element , index) => ( // added index
<div key={index}>
<h4 key={element.name}>{element.title}</h4>
<ul key={element.name}>
{element.content.map((index) => (
<li key={index.id}>
{index.name}
</li>
))}
</ul>
</div>
))}
这会将索引添加到数组映射。
评论
0赞
Fateme Ghalandari
8/28/2023
警告已更改:警告:遇到两个具有相同密钥的子项。密钥应该是唯一的,以便组件在更新中保持其标识。非唯一键可能会导致子项被重复和/或省略 - 该行为不受支持,并且可能会在将来的版本中更改。0
0赞
Jerry
8/28/2023
#2
当任何循环或嵌套循环开始时,应将其放置在
它应该起作用:key={index}
parent element tag.
{arr.map((element,index) => (
<div key={index}>
<h4>{element.title}</h4>
<ul>
{element.content.map((item,index2) => (
<li key={index2}>
{item.name}
</li>
))}
</ul>
</div>
))}
下一个:将值插入结构列?
评论