提问人:Binayak Purohit 提问时间:5/26/2023 更新时间:5/26/2023 访问量:283
如何修复 React 中的“列表中的每个子项都应该有一个唯一的'key' prop”警告?
How can I fix the 'Each child in a list should have a unique 'key' prop' warning in React?
问:
我正在开发一个 react 应用程序,我无法修复此警告,请您帮助找到我需要密钥的具体位置
我的代码块,其中产生了错误-
const [experiences, setExperiences] = useState([]);
useEffect(() => {
const query = '*[_type == "experiences"]';
const skillsQuery = '*[_type == "skills"]';
client.fetch(query).then((data) => {
setExperiences(data);
});
client.fetch(skillsQuery).then((data) => {
setSkills(data);
});
}, []);
<div className="app__skills-exp">
{experiences.map((experience) => (
<motion.div
className="app__skills-exp-item"
key={experience.year}
>
<div className="app__skills-exp-year">
<p className="bold-text">{experience.year}</p>
</div>
<motion.div className="app__skills-exp-works" key={experience.works}>
{experience.works.map((work) => (
<>
<motion.div
whileInView={{ opacity: [0, 1] }}
transition={{ duration: 0.5 }}
className="app__skills-exp-work"
data-tip
// data-for is depricated as v4 using data-tooltip-id instead
data-tooltip-id={work.name}
key={work.name}
>
<h4 className="bold-text">{work.name}</h4>
<p className="p-text">{work.company}</p>
</motion.div>
<Tooltip
id={work.name}
effect="solid"
arrowColor="#fff"
className="skills-tooltip"
>
{work.desc}
</Tooltip>
</>
))}
</motion.div>
</motion.div>
))}
</div>
我尝试在工具提示中使用键,但没有用
答:
0赞
Florent M.
5/26/2023
#1
列表的每个元素都应该有一个关键属性。
所以当你这样做时:
{experience.works.map((work) => (
<>
<motion.div
whileInView={{ opacity: [0, 1] }}
transition={{ duration: 0.5 }}
className="app__skills-exp-work"
// ...
</>
))}
你使用的组件叫做 a ,是编写它的快捷方式,它不能包含以这种方式编写的 prop。Fragment
<></>
key
使用快捷方式而不是全名是很常见的,但在这种特定情况下,您应该这样写:
{experience.works.map((work) => (
<Fragment key={work.name}>
<motion.div
whileInView={{ opacity: [0, 1] }}
transition={{ duration: 0.5 }}
className="app__skills-exp-work"
// ...
</Fragment>
))}
评论
0赞
Binayak Purohit
5/27/2023
非常感谢Florent M。这修复了它。我应该更好地阅读文档。干杯
评论