微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 map() 函数列出来自 firestore 的数据它只显示一个帖子而不是所有帖子

如何解决使用 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,})
    );
  };

这是调用map()函数的div:

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 举报,一经查实,本站将立刻删除。