import React from 'react';
import User from '../containers/User';
import './Sidebar.css';
const Sidebar = ({ contacts }) => {
return(
<aside className="Sidebar">
{contacts.map(contact => <User user={contact} key=
{contact.user_id} /> )}
</aside>
);
};
export default Sidebar;
我有一个用户的密钥,但我仍然收到这个警告,并且dom没有呈现联系人。如有任何帮助,我们将不胜感激。提前感谢
我在发布的关于密钥的代码中没有看到任何错误。
但是,在联系人中传递的user_id
本身可能是重复的,因此可能会出现唯一的密钥警告。
不管该警告如何,dom都应该被呈现为警告而不是错误。因此,如果不渲染dom,可能会出现其他一些问题,比如用户组件没有返回任何内容或类似的wise。。
我在本地尝试了共享边栏组件,效果很好。如果有人为造成这个问题,那么就很容易找出根本原因。
使用您的代码检查这个工作示例。希望能有所帮助。
https://codesandbox.io/s/5w5v287lj4
import React from "react";
import User from "./User";
const Sidebar = ({ contacts }) => {
return (
<div>
{contacts.map(contact => (
<User user={contact} key={contact.id} />
))}
</div>
);
};
导出默认边栏;
<Sidebar contacts={contacts} />
import React from "react";
const User = ({ user }) => {
return <div>{user.id}</div>;
};
export default User;
正如人们所说,您的一个userId很可能是重复的。
为了摆脱警告,你可以以不同的方式构建密钥(但随后你会失去一些反应优化(
import React from 'react'
import User from '../containers/User'
import './Sidebar.css'
const Sidebar = ({ contacts }) => {
return(
<aside className="Sidebar">
{contacts.map((contact, index) => <User user={contact} key={`${index}-${contact.user_id}`} />)}
</aside>
)
}
export default Sidebar
是的,id重复了。我找到并扔掉了它。谢谢你们!!!