Javascript 无法摆脱;警告:列表中的每个子项都应具有唯一的;“关键”;道具。”;
无法摆脱“警告:列表中的每个孩子都应该有一个唯一的“键”道具Javascript 无法摆脱;警告:列表中的每个子项都应具有唯一的;“关键”;道具。”;,javascript,reactjs,Javascript,Reactjs,无法摆脱“警告:列表中的每个孩子都应该有一个唯一的“键”道具 const Course=()=>{ const list=course.parts.map(parts=>{parts.name}{parts.exercises}) const exercisessonly=course.parts.map(x=>x.exercises) var-all=0; 对于(变量i=0;i{ 控制台日志(道具) 返回( {props.course} ) } 我已经在course.part.map中定义了
const Course=()=>{
const list=course.parts.map(parts=>{parts.name}{parts.exercises} )
const exercisessonly=course.parts.map(x=>x.exercises)
var-all=0;
对于(变量i=0;i{
控制台日志(道具)
返回(
{props.course}
)
}
我已经在course.part.map中定义了密钥,但它不想工作
编辑:这被标记为应该的副本,但我仍然很困惑为什么我的{course.parts.id}与{parts.id}不一样。它至少在我的眼睛里链接到同一个地方。
course.parts
是数组而不是对象,所以你的表达式course.parts.id
无效
键有助于识别哪些项已更改、已添加或已删除。列表中的每个子项都应具有唯一的“键”
const list = course.parts.map(part => <li key={part.id}>{part.name} {part.exercises}</li>)
const list=course.parts.map(part=>{part.name}{part.exercises} )
#编辑:
键不应是索引
它应该是一个唯一的Id。如果数组被重新排序或插入了不同的项,或者从数组中删除了一个单元格,则索引键存在问题。它们都将
未定义(除非您已将id
属性添加到course.parts
数组中。但即使如此,它们都是相同的)您可以使用id的索引instant“course.parts.map((parts,index)=>”欢迎使用堆栈溢出!请在发布之前。有关搜索的更多信息。@Md.AbuSayed-不要这样做。“来自reactjs.org/docs/lists and keys.html#keys:“如果项目顺序可能发生变化,我们不建议对键使用索引。这可能会对性能产生负面影响,并可能导致组件状态问题。”(通过t.J.Crowder)为什么要投反对票?这听起来像是一个发现差异的游戏,而不是一个答案。看起来你建议使用parts.id
作为唯一值,但问题中没有建议parts.id
甚至存在。你的答案是对的。OP映射到课程。parts
但从访问id
当然。部分
。你应该在回答中澄清这一点。这也可能是一个经常重复的问题。它不能回答这个问题,你可以建议另一个问题,如使用索引作为关键字