显示一个数组,它是 useCollectionData 在反应中的结果
display an array which is a result of useCollectionData in react
我是 Firebase 的新手,正在练习聊天应用。 React 警告我的消息列表需要一个唯一的 key-id,这是由此行代码引起的:
{messages && messages.map(msg => <ChatMessage key={msg.id} message={msg} />)}
我不明白为什么它不拿我的钥匙={msg.id}。
任何帮助表示赞赏。
这是导致反应控制台错误的我的函数的快照:
function ChatRoom() {
const messagesRef = firestore.collection('messages');
const query = messagesRef.orderBy('createdAt').limit(25);
const [messages] = useCollectionData(query, { idField: 'id' });
const [formValue, setFormValue] = useState('');
return (
<>
<main>
{messages && messages.map(msg => <ChatMessage key={msg.id} message={msg} />)}
</main>
<form onSubmit={sendMessage}>
<input value={formValue} onChange={(e) => setFormValue(e.target.value)} placeholder="say something nice" />
<button type="submit" disabled={!formValue}>️</button>
</form>
</>)
}
很有可能,msg.id
对于所有记录来说不是唯一的。在您的情况下,您可以使用 index
作为 map
函数的第二个参数 -
{messages && messages.map((msg, index) => <ChatMessage key={index} message={msg} />)}
我是 Firebase 的新手,正在练习聊天应用。 React 警告我的消息列表需要一个唯一的 key-id,这是由此行代码引起的:
{messages && messages.map(msg => <ChatMessage key={msg.id} message={msg} />)}
我不明白为什么它不拿我的钥匙={msg.id}。 任何帮助表示赞赏。 这是导致反应控制台错误的我的函数的快照:
function ChatRoom() {
const messagesRef = firestore.collection('messages');
const query = messagesRef.orderBy('createdAt').limit(25);
const [messages] = useCollectionData(query, { idField: 'id' });
const [formValue, setFormValue] = useState('');
return (
<>
<main>
{messages && messages.map(msg => <ChatMessage key={msg.id} message={msg} />)}
</main>
<form onSubmit={sendMessage}>
<input value={formValue} onChange={(e) => setFormValue(e.target.value)} placeholder="say something nice" />
<button type="submit" disabled={!formValue}>️</button>
</form>
</>)
}
很有可能,msg.id
对于所有记录来说不是唯一的。在您的情况下,您可以使用 index
作为 map
函数的第二个参数 -
{messages && messages.map((msg, index) => <ChatMessage key={index} message={msg} />)}