例如,如果我有此代码段,如何在不出现以下错误的情况下进行映射?
数组或迭代器中的每个子代都应具有唯一的“键”属性。
with cte
as (select row_number() over(partition by sale_id order by sale_id) as rnk
,*
from [dbo].[FactGunSales]
)
delete
from cte
where rnk <> 1
答案 0 :(得分:0)
在反应中它将查找键属性。为了解决您的问题,最好是将UI中的key属性绑定并相应地映射数组对象,然后您可以按照其映射数据,而不仅仅是从Student中选择值。
如果我们的学生对象没有唯一属性,则可以使用Symbol或使用诸如cuid的某些节点模块来生成唯一键。
答案 1 :(得分:0)
您应该添加一个关键属性:
this.setState({
campus: e.target.value.map(school => {value: school.value, key: school.id})
});
答案 2 :(得分:0)
我相信您是否正在使用e.target.value,因此您希望它已经是要映射的数组(因为.map()是数组方法)?
我认为不可能从e.target.value获取数组,但是无论如何,您在React官方文档中都有答案,这是关于可以使用默认项目索引作为键:
const todoItems = todos.map((todo, index) =>
<li key={index}>
{todo.text}
</li>
);
答案 3 :(得分:0)
您可以使用索引并将其设置为键,因为array.map具有第二个可选参数作为索引,这将是唯一的。[注意:如果您没有索引,请使用此参数id或唯一的东西]
由于在反应中您需要具有键属性,所以这不是错误,而是警告。
键通常有助于确定哪个元素已更新。您可以在此List and Keys in React
上阅读更多内容
this.setState({
campus: e.target.value.map((school,index) => {value: school.value, key: index})
});