【发布时间】:2018-11-27 06:23:19
【问题描述】:
在渲染组件时,我不断收到唯一键子错误。我传入的数据有一个 UUID,我将其用作每个孩子的关键道具。对于我拥有的每个孩子,react 都会重新渲染很多次。是什么导致重新渲染?
// Contact.js
import React from 'react';
const Contact = ({ user, chat, activeChat, setActiveChat }) => {
if (!chat.id) return null;
const lastMessage = chat.messages[chat.messages.length - 1];
const chatSideName =
chat.users.find(name => name !== user.username) || 'General';
const classNames = activeChat && activeChat.id === chat.id ? 'active' : '';
return (
<div
key={chat.id} // ebd4698f-c4b2-4dfe-92b5-2f6636d98db8
className={`user ${classNames}`}
onClick={() => {
setActiveChat(chat);
}}
>
<div className="user-photo">{chatSideName[0].toUpperCase()}</div>
<div className="user-info">
<div className="name">{chatSideName}</div>
{lastMessage && (
<div className="last-message">{lastMessage.message}</div>
)}
</div>
</div>
);
};
export default Contact;
这是容器组件的render()方法中的渲染方法,负责渲染<Contact />
// SideBar.js
{chats.map(chat => {
return (
<Contact
chat={chat}
user={user}
activeChat={activeChat}
setActiveChat={setActiveChat}
/>
);
})}
【问题讨论】:
标签: javascript reactjs