【发布时间】:2021-08-18 11:01:57
【问题描述】:
我在 React 方面并不出色,但我已经研究了几个小时而没有希望,所以如果有人知道这里的问题,我会很感激知道为什么这是错误的以及将来如何避免这个问题。
错误:对象作为 React 子对象无效(找到:带有键 {} 的对象)。如果您打算渲染一组子项,请改用数组。
import { Avatar, IconButton } from "@material-ui/core";
import React, { useEffect, useState } from "react";
import "./Sidebar.css";
import SidebarChat from "./SidebarChat";
import SearchIcon from "@material-ui/icons/Search";
import RateReviewOutlinedIcon from "@material-ui/icons/RateReviewOutlined";
import { useSelector } from "react-redux";
import { selectUser } from "./features/userSlice";
import db, { auth } from "./firebase";
function Sidebar() {
const user = useSelector(selectUser);
const [chats, setChats] = useState([]);
useEffect(() => {
db.collection("chats").onSnapshot((snapshot) =>
setChats(
snapshot.docs.map((doc) => ({
id: doc.id,
data: doc.data(),
}))
)
);
}, []);
const addChat = () => {
const chatName = prompt("Please enter a chat name");
if (chatName) {
db.collection("chats").add({
chatName: chatName,
});
}
};
return (
<div className="sidebar">
<div className="sidebar__header">
<Avatar
onClick={() => auth.signOut()}
src={user.photo}
className="sidebar__avatar"
/>
<div className="sidebar__input">
<SearchIcon />
<input placeholder="Search" />
</div>
<IconButton varient="outlined" className="sidebar__inputButton">
<RateReviewOutlinedIcon onClick={addChat} />
</IconButton>
</div>
<div className="sidebar__chats">
{chats.map(({ id, data: { chatName } }) => (
<SidebarChat key={id} id={id} chatName={chatName} />
))}
</div>
</div>
);
}
【问题讨论】:
标签: reactjs