🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

user/[id] 페이지에서 retweet 시 질문입니다.

22.03.16 13:41 작성 조회수 135

0

항상 강의 잘 듣고 질문에 답 잘해주셔서 감사합니다.

 

Avatar 클릭 시  Link로 user/[id] 로 라우팅 되는 것을 구현한 후

user/[id] 페이지에서 Retweet을 하면 [id]의 유저가 아닌 로그인한 id의 post 임에도 불구하고 user/[id] posts 목록에 Retweet 되었다는 글이 추가됩니다.

물론 새로고침하면 다시 사라집니다.

 

Retweet 시 mainPosts에 data가 추가되는데 그 이후에 다시 LOAD_USER_POSTS_REQUEST가 호출되어 화면에 posts들이 보여지는데 이 때 data에 id 넘어가면서 where 조건에 걸려 Retweet한 글은 안보여져야 하지 않나요?

(backend 부분을 확인해보니 Retweet 시 retweet에 관한 요청은 확인이 되지만 LOAD_USER_POSTS_REQUEST에 관한 요청은 안들어오는 것 같습니다.)

 

이 부분이 궁금해서 글 남깁니다 !

답변 1

답변을 작성해보세요.

0

https://github.com/ZeroCho/react-nodebird/blob/master/ch7/front/reducers/post.js#L111

때문에 그렇네요. 이 경우 때문에 RETWEET 액션을 수정해야 할 것 같습니다. 예를 들어 user/[id]에서 retweet한 경우에 [id]가 자신의 id가 아니면 mainPosts에 push하지 않는다는 식으로요.

윤동호님의 프로필

윤동호

질문자

2022.03.16

아 넵 감사합니다 한 번 해보겠습니다~

윤동호님의 프로필

윤동호

질문자

2022.03.16

user/[id].js 에서 PostCard에 prop 으로 queryId={router.query.id} 를 넘기고 

PostCard의 onRetweet useCallback 사용시 if문으로 queryId가 있으면 dispatch 할 때 action에 queryId를 넣어주고 saga에서도 RETWEET_SUCCESS 시 queryId를 넘겨주고

reducer에서 RETWEET_SUCCESS 시 if문에 action.queryId가 있다면 mainPosts.unshift를 안하도록 하였습니다.

 

index.js 기본 화면에서 retweet을 할 때에는 queryId를 넘겨주지 않았는데 이 때 saga에서 

RETWEET_SUCCESS 시 action.queryId가 없어서 못 넘겨줄거라고 생각했는데 오류 없이 잘 진행되었습니다... 문제 없는 걸까요?

queryId는 undefined로 넘어가는 거라서 에러 없이 됩니다.

윤동호님의 프로필

윤동호

질문자

2022.03.16

네 답변 감사합니다 !

채널톡 아이콘