【发布时间】:2021-11-15 22:15:47
【问题描述】:
我知道这是一个非常基本的问题,即使是初学者也可以做到。但不知何故我收到了这个错误:
index.js:1 警告:列表中的每个孩子都应该有一个唯一的“键” 道具。
查看
FilterProducts的渲染方法。
这是我的代码
const filterList = filterBy.map((f, i) => {
const key = Object.keys(f);
return (
<div key={i} className="filter">
<h4 className="filter__header">{key}</h4>
{f[key].map((val) => {
return (
<CheckBoxInput
changeVal={(e) => changeValHandler(e, key)}
value={val.toLowerCase()}
label={val}
/>
);
})}
</div>
);
});
我正在渲染 2 个列表,我提供了第一个列表的密钥,而第二个列表我不知道如何传递密钥。它是一个组件,如果我将密钥传递给该组件,它会抱怨密钥不能作为道具传递。 请在这里给我一些帮助
【问题讨论】:
-
键应该是唯一的东西,可以识别每个映射的元素。在没有它的情况下,您始终可以使用当前数组索引,就像使用
<div key={i} ...一样。是什么阻止您应用完全相同的解决方案? -
CheckBoxInput 应该有一个
key="..."。除非两个输入具有相同的 val,否则您可能可以使用val作为您的密钥 -
这很奇怪。我在这里提问之前就这样做了。那时我收到警告说我不能使用 key 作为道具,因为它是未定义的。但实际上我不想将密钥作为道具传递。只是想通过钥匙。现在问题解决了。我不再收到该警告。
标签: reactjs typescript react-redux react-hooks jsx