【发布时间】:2020-07-15 19:56:05
【问题描述】:
我在解决此错误时遇到了一些问题,我不知道从哪里开始。这是错误:
我也不明白第二个窗口中箭头指向<Button 的那一行。
这些是sn-ps的代码:
const[username, setUsername] = useState('');
<form className="app__register__login">
<Input
placeholder="username"
type="text"
value={username}
onChange={(e) => setUsername(e.target.value)}
/>
/>
{
posts.map(({id, post}) => (
<Post key={id} username={post.username} caption={post.caption} imageUrl={post.imageUrl}/>
))
}
当我编写以下代码时:
db.collection('posts').onSnapshot(snapshot => {
setPosts(snapshot.docs.map(doc => doc.data()));
})
{
posts.map(post) => (
<Post username={post.username} caption={post.caption} imageUrl={post.imageUrl}/>
))
}
我没有收到任何错误消息。当我将其更改为:
db.collection('posts').onSnapshot(snapshot => {
setPosts(snapshot.docs.map(doc => ({
id: doc.id,
post: doc.data(),
})));
})
{
posts.map(({id, post}) => (
<Post key={id} username={post.username} caption={post.caption} imageUrl={post.imageUrl}/>
))
}
我知道了TypeError。
【问题讨论】:
-
您的代码看起来不错,但问题很可能来自
doc本身。所以你可能不得不尝试复制数据而不是{ id: doc.id, post: { ...doc.data() } } -
也不起作用:(
-
如果不走运,您可能必须自己公开一个模型,例如:
{ username: doc.data().username, ... }或者甚至使用new Model(doc.data())类,然后在您的构造中覆盖东西
标签: javascript reactjs firebase firebase-realtime-database