Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 警告:列表中的每个子项都应具有唯一的;“关键”;提案。-反应_Javascript_Arrays_Reactjs_Javascript Objects - Fatal编程技术网

Javascript 警告:列表中的每个子项都应具有唯一的;“关键”;提案。-反应

Javascript 警告:列表中的每个子项都应具有唯一的;“关键”;提案。-反应,javascript,arrays,reactjs,javascript-objects,Javascript,Arrays,Reactjs,Javascript Objects,我正在用ReactJS构建一个看板应用程序,用户可以在三个不同的“列”(TODO、Onprogress和Done)中添加一张“卡片”。我遇到的问题是,卡片中应该显示的内容没有按应有的方式显示,尽管我的状态返回的对象很好(当我console.log所有内容时)。我认为问题在于,我将一个对象推入数组,然后将其作为值添加到状态中的一个键中,因此,当我使用道具传递数据时,无法正确读取数据。我将在下面分享我的所有代码库 这是我的应用程序组件: import React,{Component}来自'Rea

我正在用ReactJS构建一个看板应用程序,用户可以在三个不同的“列”(TODO、Onprogress和Done)中添加一张“卡片”。我遇到的问题是,卡片中应该显示的内容没有按应有的方式显示,尽管我的状态返回的对象很好(当我console.log所有内容时)。我认为问题在于,我将一个对象推入数组,然后将其作为值添加到状态中的一个键中,因此,当我使用道具传递数据时,无法正确读取数据。我将在下面分享我的所有代码库

这是我的应用程序组件:

import React,{Component}来自'React';
从“./列”导入列;
从“/AddCardForm”导入AddCardForm;
导入“/App.css”;
类应用程序扩展组件{
建造师(道具){
超级(道具)
此.state={
栏目:[
{
名称:“待办事项”,
卡片:[]
},
{
名称:“Onprogress”,
卡片:[]
},
{
名称:“完成”,
卡片:[]
}, 
] 
};
};
//componentDidMount(){
//const{coldata}=this.state.columns
//console.log(coldata);
////this.ref=base.syncState();
// }
addCard=(卡,其他状态)=>{
console.log(“添加卡”);
const cards={…this.state.columns.cards};
卡片[`card`]=卡片;
让todosCards=[]
让onprogressCards=[]
让doneCards=[]
Object.values(otherStatus).map(function(value){
if(value.includes('Onprogress')&&value.includes('Done')){
todosCards.推送(卡片)
}else if(value.includes('Todos')&&value.includes('Done')){
打开卡片。推(卡片);
}else if(value.includes('Todos')&&value.includes('Onprogress')){
doneCards.推送(卡片);
}
返回(ToDoCards | | onprogressCards | | doneCards);
});
控制台日志(todosCards);
控制台日志(在进程卡上);
控制台日志(doneCards);
这是我的国家({
栏目:[
{ 
名称:“待办事项”,
卡片:托德斯卡
},
{ 
名称:“Onprogress”,
卡片:onprogressCards
},
{ 
名称:“完成”,
卡片:doneCards
},
] 
});
}
render(){
返回(
{Object.keys(this.state.columns).map(key=>(
))}
);
}
}

导出默认应用程序来自react文档:

键有助于识别哪些项已更改、已添加或已删除。应为数组中的元素提供键,以使元素具有稳定的标识

因此,从本质上讲,如果要将数组映射到组件,那么对每个组件(映射的组件)使用唯一键将确保仅在必要时重新渲染这些组件


请按照下面的说明进行操作,您将了解警告想要深入告诉您的内容。

无论您在何处使用循环来构建react组件,您都必须添加prop
键并向其传递唯一值

您可以重新定义
map
调用以包含如下索引:

Object.keys(this.state.columns).map((count,key)=>(

))
首先阅读
键的工作原理以及需要它的原因