reactjs - 如何使用地图功能向孩子添加“唯一键道具”
问题描述
我看到其他人对此提出了类似的问题,并且我尝试实施他们收到的答案。但我仍然收到控制台错误。我的意思是代码按预期工作我只是讨厌控制台错误。
这是我的代码
const Accordion = () => {
const [clicked, setClicked] = useState(false);
const toggle = index => {
if (clicked === index) {
//if clicked question is already active, then close it
return setClicked(null);
}
setClicked(index);
};
return (
<IconContext.Provider value={{ color: '#441d0c', size: '25px' }}>
<AccordionContainer>
<FaqContainer>
{FaqData.map((item, index) => {
return (
<>
<QuestionWrapper onClick={() => toggle(index)} key={index}>
<h2>{item.question}</h2>
<span>{clicked === index ? <FiMinus /> : <FiPlus />}</span>
</QuestionWrapper>
{clicked === index ? (
<AnswerDropdown>
<p>{item.answer}</p>
</AnswerDropdown>
) : null}
</>
)
})}
</FaqContainer>
</AccordionContainer>
</IconContext.Provider>
)
}
和我得到的控制台错误:
警告:列表中的每个孩子都应该有一个唯一的“关键”道具。
在我看来,每个孩子都有一个唯一的钥匙,我错过了什么?
解决方案
您正在使用不能有键的 React Fragment 短语法。请参阅:https ://reactjs.org/docs/fragments.html#short-syntax
您必须使用完整的语法:
{FaqData.map((item, index) => {
return (
<React.Fragment key={index}>
...
</React.Fragment>
)
})}
推荐阅读
- python - Keras TFRecord 使用 vgg19 模型的输入变化——错误图已断开
- r - 如何将 json 转换为 tibble
- apache-flink - scala udf 在 flink sql 客户端中抱怨“java.lang.ClassNotFoundException”
- salesforce - 销售队伍:从经典到照明
- apache-spark - Spark SQL 本机语法和 Spark 中的 Hive QL 语法有什么区别?
- node.js - 在猫鼬中找到最受好评的产品
- laravel - 在 Laravel 中种子后向数据库添加记录的问题
- karate - 空手道机器人 - 如何获取元素属性?
- swift - XCTest 在运行测试的中途无限期挂起
- python - 当链接文本出现在 html 中时,为什么这会给我一个错误提示 NoSuchElementException?