댓글 기능 구현 중 들었던 생각에 대하여

이승훈·2022년 9월 7일
1

시행착오

목록 보기
3/23
post-thumbnail

인스타그램 클론코딩 중 댓글기능은 단순히 댓글을 작성하고 화면에 표시하는것만이 아닌 이후에 백엔드로부터 게시글과 그 댓글에 대한 데이터를 받았을 때를 고민하며 코드를 작성해보려 노력하였다.

1. 현재적용 로직

현재 내가 작성한 댓글기능의 큰 로직은 다음과 같다.
  1. 마운트하였을 때 게시글의 댓글들만 별도로 모아 comments라는 state에 저장.
    -> comments는 각 요소가 배열로 이루어진 배열이며 그 구성은 아래와 같다.
[
  [ //<-n번쨰 게시글의 댓글을 모아놓은 배열
    {
      User : "UserId1", //<- 댓글에대한 정보를 모은 객체
      Text : "댓글내용1",
      Like : true or false
    },
    {
      User : "UserId2",
      Text : "댓글내용2",
      Like : true or false
    }        
  ],
  [],
  [],
  [], // <- 각각의 게시글의 댓글들을 담고있는 배열
]
  1. comments에 담겨있는 정보를 바탕으로 각각의 게시글에 댓글들을 렌더링
  2. 댓글을 작성하면 comments에 새로 작성한 댓글을 등록하고 setComments를 통해 페이지를 새로 렌더링
    -> 그러면 내가 작성한 댓글이 포함된채로 페이지가 새로 렌더링 되겠다.

1-1.현재로직의 의도

이를통해 내가 노린효과는 다음과 같다.
  1. 이 후 백엔드로부터 데이터를 받을 경우에 대비
  2. 백엔드에 작성한 댓글들을 보내줌이 용이함.

2. 현재로직의 문제점이라 생각하는부분

허나 현재 잘못되었다고 생각하는점이 있으며 그는 아래의 내용과 같다.
-. 프론트에서 댓글들을 정리하고 모아놓을 필요가 없다.
-> 어차피 클라이언트에서 작성한 댓글을 서버에 전송하면 알아서 댓글들을 게시글과 함께 정리할테니 말이다.

짦은 생각으로 클라이언트에서 댓글들을 모아서 정리해놓으면 백엔트와의 작업 시 편리하지않을까 생각하였으나 이는 쓸모없는 리소스의 낭비일것이다라고 현재 결론을 내렸다.

2-1.문제점의 개선 방법

현재 내가 생각하는 올바른 방법을 정리하자면 아래와 같다.

  1. 댓글 작성 후 제출 시 HTML에 추가해줌으로서 화면에 보이게 한다.
    -> 별도로 클라이언트에서 객체 혹은 배열을 사용해서 댓글 데이터를 관리하지 않는다.
  2. 댓글 제출 시 HTML추가 및 서버에 작성한 댓글정보를 전송한다.
  3. 이후 페이지를 리로드하게 되면 내가 임시로 만들어준 댓글의 HTML은 날아가지만 서버에 저장되어있던것을 다시 페이지에 렌더링하므로 사용자경험상으로는 차이가 없다.
profile
Beyond the wall

0개의 댓글