Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[48기 이인재] PostList 기능 구현 #3

Open
wants to merge 31 commits into
base: main
Choose a base branch
from
Open

Conversation

llinjae
Copy link
Contributor

@llinjae llinjae commented Aug 13, 2023

1. 본 PR이 우리 팀의 웹 서비스 제품성에 어떠한 기여를 하였고,
사용자에게 어떠한 기대효과를 전달하는지 작성해주세요.

  • 내 PR이 제품 내 어떠한 기능적인 배경/전후맥락 가운데 개발되었나요?

유저들이 작성하는 게시글을 보여줄 수 있는 PostList 페이지에서,
좋아요 버튼을 누르면 하트가 채워지면서 좋아요 수를 올렸다 줄였다가 할 수 있어 좋아요 수를 확인 가능하게 합니다.
게시글을 삭제하고 싶을 때 삭제 버튼을 눌러서 선택한 리스트만 삭제가 가능하도록 합니다.
초기값을 Feed 내용 숨기기로 하여 보고 싶은 Feed의 댓글만 볼 수 있도록 합니다.
Feed에 댓글을 달 수 있게 합니다.
달린 댓글을 삭제할 수 있게 합니다.

  • 내 PR이 Merge 됨으로써 유저에게 전달되는 편익/기대효과는 무엇일까요?

유저는 자신의 게시글뿐만 아니라 다른 사람들의 게시글도 볼 수 있고 좋아요 수를 볼 수도 있습니다.
또한, 삭제도 할 수 있어 자신이 마음에 들지 않으면 삭제가 가능하여 게시글을 올리는 데 더 편리하게 사용할 수 있습니다.
피드 내용을 삭제하고 프로필 영역만 남겨두어 보고 싶은 내용만 볼 수 있고 한 번에 보기 편리합니다.
Feed에 댓글을 달아 자신의 의견을 공유할 수 있습니다.
댓글을 삭제할 수 있어 마음에 들지 않거나 잘못 작성된 댓글을 보지 않을 수 있습니다.


2. 이 브랜치에서 어떤 내용을 개발했는지 큰 제목과 상세 내역을 적어주세요.

좋아요 숫자 변경 기능 구현

  • 빈 하트 버튼을 누르면 빨간 하트로 바뀌고 다시 누르면 다시 빈 하트로 변합니다.
  • 빨간 하트로 바뀌면 좋아요 수가 1개 올라가고 빈 하트로 다시 바꾸면 좋아요 수가 1개 내려갑니다.

게시글 삭제 기능 구현

  • 삭제 버튼을 누르면 해당 게시글만 삭제됩니다.
  • 만약 게시글이 없으면 '게시글이 없습니다.'라는 문구가 뜹니다.

Mock Data로 다양한 데이터 전달

게시글의 내용 숨기기 기능 구현

  • 프로필 영역 클릭시 댓글 숨기기 보이기가 가능합니다.

컴포넌트화

  • Feed 영역과, FeedItem(Feed의 Profile 영역 제외한 영역)을 컴포넌트화하여 코드를 알아보기 쉽게 리팩토링하였습니다.

댓글 게시 기능 구현

  • 스프레드 연산자를 사용하여 이전 댓글도 같이 갖고 와 댓글이 이어서 작성되도록 하였고, e.preventDefault()로 게시 버튼을 누를 때마다 새로고침하는 것을 방지하였습니다.

댓글 삭제 기능 구현

  • slice로 선택한 리스트의 전 후의 배열을 두 개 만들고 concat으로 합치면 새로운 배열이 만들어 삭제 기능을 구현하였습니다.

3. 개발한 화면을 캡쳐해서 첨부 해 주세요.


image
image


4. 이 브랜치에서 개발하면서 느낀 개발 성장포인트를 적어주세요.

  • 배열메서드 filter를 사용하여 리스트를 삭제할 수 있게 되었습니다.

  • Mock Data와 map 메서드로 반복되는 UI를 그릴 수 있게 되었습니다.

  • Mock Data를 props로 받아오는 것을 할 수 있게 되었습니다.

  • 좋아요 버튼을 토글하며 좋아요 수도 리렌더링되게 할 수 있게 되었습니다.

  • filter 메서드로 삭제를 할 수 있다는 것을 알게 되었습니다.

  • react에서의 조건문을 더 잘 사용할 수 있게 되었습니다.

  • e.preventDefault()를 언제 사용하는지 더 잘 알게 되었습니다.

  • 배열 내에서 이전 값들이 사라지지 않고 이어서 작성하는 방법을 더 잘 알게 되었습니다.

  • filter 메서드로 삭제한 것 이외에도 slice오 concat을 이용해 삭제 기능을 구현할 수 있다는 것을 알게 되었습니다.


@llinjae llinjae changed the title PostList 기능 구현 [48기 이인재] PostList 기능 구현 Aug 14, 2023
README.md Outdated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 PR에선 README.md 파일이 삭제되면 안됩니다.
다른 PR에서 README.md 파일이 수정된 후 이 PR이 병합되면, 수정한 내용까지 지워버릴 수도 있습니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

새로 생성해서 깃헙에 있는 내용들 추가했는데 맞을까요..?

src/pages/PostList/PostList.jsx Outdated Show resolved Hide resolved
Comment on lines 21 to 24
const handleRemove = targetId => {
const newList = feedsData.filter(data => data.id !== targetId);
setFeedsData(newList);
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

삭제 기능을 실제로 백엔드 서버와 붙이는 것까지 고려했다면, 이 부분은 프론트 단에서만 작동하는 코드이기 때문에 실제로 반영하려면 다른 방식이 필요할 수도 있습니다.
추후에 서버와 기능을 붙여볼 때 참고해 주세요!

Copy link
Contributor

@lang92 lang92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰 확인해주세요 인재님!

그리고 라벨도 그때그때 상황에 맞게 부착해서 해당 PR이 리뷰가 필요한 상황인지, 추가 작업 진행 중인지, 리뷰 후 머지가 되어도 되는 내용인지 알려주세요!

src/pages/PostList/PostList.jsx Outdated Show resolved Hide resolved
.then(data => setFeedsData(data));
}, []);

const noListMessage = '게시글이 없습니다.';
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컴포넌트가 렌더링 될 때마다 다시 그려질 필요가 없는 상수 데이터이기 때문에, 컴포넌트 외부에 작성해도 됩니다.

그리고 개인의 성향일 수 있지만, '게시글이 없다'라는 text는 따로 관리할 중요한 변수는 아닌 것 같다는 생각이 드네요! 인재님만의 기준을 세워가는 것이 중요할 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그러면 게시글이 없는 것을 현재 상태에서 어떻게 보여주면 좋을까요?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀드린 제 기준에 따른다면, 따로 변수로 지정하지 않고 리터럴하게 직접 JSX Element 안에 작성할 것 같습니다.

src/pages/PostList/PostList.jsx Outdated Show resolved Hide resolved
src/pages/PostList/PostList.scss Outdated Show resolved Hide resolved
src/pages/PostList/PostList.scss Outdated Show resolved Hide resolved
src/pages/PostList/components/Feed.jsx Outdated Show resolved Hide resolved
Comment on lines 12 to 15
const handleHeartToggle = () => {
setHeartToggle(!heartToggle);
setLike(heartToggle ? like - 1 : like + 1);
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도, 위에 삭제 관련된 코멘트 참고해주세요!

src/pages/PostList/components/Feed.jsx Outdated Show resolved Hide resolved
src/pages/PostList/components/Feed.scss Outdated Show resolved Hide resolved
src/style/common.scss Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants