TIL 39. 댓글 컴포넌트를 만들자.

isk·2022년 12월 26일
0

TIL

목록 보기
37/122
post-custom-banner

댓글을 불러오는 기능을 만들었다.

게시물 각각에 달리는 댓글들만 골라서 보여주는 로직이 살짝 복잡해서,

금방 해내지는 못했지만 어찌저찌 해결했다.

해결하면서 해당 로직에 대해 깊게 이해하는 계기가 되었다.

return (
    <StCommentContainer>
      <form onSubmit={onSubmitComment}>
        <input type="text" />
        <button type="submit">완료</button>
      </form>
      {globalComment.map((comment) => (
        <Comment
          key={comment.id}
          id={comment.id}
          body={comment.body}
          creator={comment.creator}
        />
      ))}
    </StCommentContainer>
  );

위 코드는 PostList.jsx의 return 부분이다.

return 부분 안에 Comment라는 컴포넌트를 map을 사용해서 Comment의 개수만큼 반복했다.

export const getComments = createAsyncThunk(
  'getComments',
  async (commentId) => {
    const data = [];
    const q = query(
      collection(dbService, `posts/${commentId}/comment`),
      orderBy('createAt', 'desc')
    );
    const docs = await getDocs(q);
    docs.forEach((doc) => {
      const commentData = {
        id: doc.id,
        ...doc.data(),
      };
      data.push(commentData);
    });
    console.log('data : ', data);
    return data;
  }
);

comment는 이렇게 받아온다. 각 게시물의 Id를 url로 이용해서 파이어베이스 DB에 접근하고, 해당 게시물의 데이터만 받아온다.

post-custom-banner

0개의 댓글