如何解决使用 map() 函数列出来自 firestore 的数据它只显示一个帖子而不是所有帖子
我正在尝试从我的 Firestore 数据库中获取要显示的数据“答案”,但它只显示了第一篇文章。我确定这是因为我如何实现 map() 函数。我没有调用该函数以允许它在每个答案下列出,而是只列出一个,我不确定要为每个答案更改什么。
useEffect(() => {
let mounted = true;
if (questionId) {
db.collection("questions")
.doc(questionId)
.collection("answer")
.orderBy("timestamp","desc")
.onSnapshot((snapshot) => {
if (mounted) {
setGetAnswer(
snapshot.docs.map((doc) => ({
id: doc.id,answers: doc.data(),}))
);
}
});
}
loadQuestionAnswer();
return () => (mounted = false);
},[questionId]);
const loadQuestionAnswer = () => {
dispatch(
setQuestionInfo({
questionId: Id,questionName: question,})
);
};
return (
<div className="post">
<div className="post__info">
</div>
<div className="post__body">
<div className="post__question">
<p>{question}</p>
</div>
<div className="post__answer">
{getAnswer.map(({ id,answers }) => (
<p key={id} style={{ position: "relative",paddingBottom: "20px" }}>
{Id === answers.questionId ? (
<span>
{parse(answers.answer)}
<br />
<span
>
<span
>
{answers.user.displayName
? answers.user.displayName
: answers.user.email}{" "}
on{" "}
{new Date(answers.timestamp?.toDate()).toLocaleString()}
</span>
</span>
</span>
) : (
""
)}
</p>
))}
</div>
</div>
<div className="post__questionAnswer">
</div>
</div>
);
解决方法
这个问题实际上是我的失误。我为 questionId 引入了一个 userSelector (redux),它会在点击帖子后选择帖子的 id。一旦我删除了 questionId 并将其替换为 Id 就可以了。 Id 是从 firebase 中选择的问题 ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。