인프런 커뮤니티 질문&답변

jinne님의 프로필 이미지
jinne

작성한 질문수

React로 NodeBird SNS 만들기

좋아요 버튼 눌리는 문제... 상세페이지와 연동이 이상한 것 같습니다

작성

·

217

0

깃허브 주소

https://github.com/jinne202/maplebird

질문이 조금 복잡할 수 있는데, 좋아요 버튼을 메인페이지에서 누르면 fail이 뜨면서 눌러지지 않는데, 좋아요 버튼을 상세페이지에서 누르면 (post/id) 눌러집니다. 또한 같은 상태에서 메인 페이지에 다시 돌아오면 다시 또 좋아요 버튼이 눌러집니다 ㅠㅠreducer에서 singlePost : {~~} 이 부분을 주석처리하면 메인페이지에서도 버튼이 잘 눌러지는데, 어떤 문제인지 짐작하기가 어렵습니다. consle.log로 눌릴 때 마다 post id를 찍어봤는데 메인 페이지에서도 post id를 잘 체크하고 있어서 어떤 부분에서 오류가 나는지 체크하기가 어렵습니다 ㅠㅠ 메인 페이지에서는 post.id랑 singlePost에서 id를 파악하는데 뭔가 문제가 있는건지 ㅠㅠ... 혹시 몰라서 깃 주소도 같이 올립니다...! 

코드 

<reducer>

<saga>

<back singlePost>

답변 6

0

jinne님의 프로필 이미지
jinne
질문자

감사합니다! 

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 가능합니다.

첫 줄 ...state.singlePost는 그냥 state.singlePost하셔도 됩니다.

0

jinne님의 프로필 이미지
jinne
질문자

...state.singlePost === null ? {
                    ...state,
                    mainPosts
                } : {
                    ...state.singlePost,
                    Likers : [{id : action.data.userId}, ...state.singlePost.Likers],
                }
이렇게 써서 해결했는데 괜찮은 코드일까 궁금합니다~~!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

두 가지 방법이 있는데요. singlePost에서 좋아요를 누르는 액션을 새로 만드는 것이 있을 수 있고요(LIKE_POST_SINGLE_POST_REQUEST처럼, 비추천).

아니면 singlePost인지 아닌지를 LIKE_POST_SUCCESS에서 파악해서 할 수 있습니다. singlePost가 reducer에 들어있는지 아닌지로 분기처리하시면 됩니다.

0

jinne님의 프로필 이미지
jinne
질문자

음... 제가 생각해봤을때 그러면 메인 화면에서 like를 눌렀을 때 singlepost가 null이 아닌 singlepost의 값을 받아올 수 있어야 하는거죠? 현재 싱글포스트에는 이런식으로 정보들이 있는데, 음... ㅠㅠ singlePost.Likers를 따로 가져와야 할 것 같은데, 지금 post/:id에서는 눌렀을때 모두 action.data로 받아오고 있는데 like에서는 action.data로는 postId만 받아올 수 있어서 이걸 어떻게 singlePost와 연결시킬 수 있을지 감이 잡히지 않습니다 ㅠㅠ 

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

Like post success랑 unlike post success에서 singlePost부분 추가하신건가요? 메인화면에서 눌렀을 때는 singlePost가 null인데 null의 속성값을 조절하려니까 애러가 나는 것 같습니다.

jinne님의 프로필 이미지
jinne

작성한 질문수

질문하기