강의

멘토링

로드맵

Inflearn brand logo image

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

신영 유님의 프로필 이미지
신영 유

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

immer 도입하기

ADD_COMMENT_SUCCESS 새로운 post에서만 작동 안 하는 문제

해결된 질문

작성

·

479

0

안녕하세요 제로초 님,

redux saga immer, faker 까지만 들었구요, 백엔드는 안 만들었고요.

faker가 문제가 있다길래,

import { faker } from '@faker-js/faker';

이거를 대신해서 설치해서 했는데, 이거의 문제는 아닌거 같고요.

 

ADD_COMMENT_SUCCESS가

기존의 post에서는 작동을 하는데,

새로운 post에서만 작동 안 하는 문제가 있습니다. Screenshot 2023-02-01 at 12.06.04 AM.pngScreenshot 2023-02-01 at 12.08.50 AM.pngScreenshot 2023-02-01 at 12.06.15 AM.png

새로운 post.id가 동작을 안 하나 싶어

const post = draft.mainPosts.find((post)=> {
  console.log(post.id == action.data.postId);
  return post.id == action.data.postId;
});

를 해봤는데 역시 true가 나옵니다.

Screenshot 2023-02-01 at 12.08.19 AM.png

아래는 브라우저 결과 사진들 입니다.

로그인 안 했을 때,

Screenshot 2023-02-01 at 12.13.21 AM.png

로그인 하고 기존의 post에 comment를 달았을 때 -> 정상적으로 동작 함.

Screenshot 2023-02-01 at 12.07.40 AM.pngScreenshot 2023-02-01 at 12.07.48 AM.png

로그인 하고 새로운 post을 하나 추가 -> 정상적으로 동작 함.

Screenshot 2023-02-01 at 12.07.57 AM.pngusername이 바뀌는 건 faker를 썼고, userId만 그래도 컴포넌트에서 받아서 써서 지금 ADD_POST_TO_ME 동작해서 1에서 2로 바뀌었구요.

그러나

새로운 post에 comment를 달았을 때 -> 콘솔로그가 true가 나옴에도 동작을 하지 않음.

Screenshot 2023-02-01 at 12.08.06 AM.png

기존의 post에도 comment가 안 달리는 거면 제가 실수를 한게 분명한데, 새로운 post에만 동작을 안 하는게 이상합니다.

ADD_COMMENT_REQUEST를 보냈을 때에도, 갑자기 mainPosts가 초기화 되거나 그런 것도 아니었습니다. 만약 그랬다면 콘솔로그가 false가 나왔어야 합니다.

Screenshot 2023-02-01 at 12.17.51 AM.png

감사합니다!

답변 6

0

신영 유님의 프로필 이미지
신영 유
질문자

해결 될 거 같습니다 너무 감사합니다!!

0

신영 유님의 프로필 이미지
신영 유
질문자

case ADD_COMMENT_SUCCESS:
  const post = draft.mainPosts.find((post)=> {
    console.log(post.id == action.data.postId);
    return post.id == action.data.postId;
  });
  post.Comments.unshift(action.data);
  draft.addCommentLoading = false;
  draft.addCommentDone = true;
  break;

여기에서 콘솔이 true가 뜨는데

draft.mainPosts.find((post)=>post.id == action.data.postId);

이부분 return 값을 콘솔로 찍어왔더니

Screenshot 2023-02-01 at 12.41.43 AM.png이렇게 콘솔에 뜨는데, {...}이부분은 클릭이 안되네요

 

 

 

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

새 게시글 push 하실 때 Comments: []는 안 넣으신 듯 하네요. 그래야 여기에 댓글을 넣을 수 있습니다.

0

신영 유님의 프로필 이미지
신영 유
질문자

Screenshot 2023-02-01 at 12.34.24 AM.png헉 죄송합니다!

근데 그래도 별 게 안 뜨네요

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

매우 중요한 게 떴습니다. unshift 앞에 배열이 undefined라는 것이요.

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

저기에 에러 위치까지 다 뜹니다.

0

신영 유님의 프로필 이미지
신영 유
질문자

Screenshot 2023-02-01 at 12.29.20 AM.png

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

addPost말고 addComment입니다.

0

신영 유님의 프로필 이미지
신영 유
질문자

이미 ADD_COMMENT_SUCCESS로 넘어갔기 때문에

reducer에서 console.log(post.id == action.data.postId);가 true가 나온 것 같습니다.

catch부분에서, console.error(err)을 해봤는데

콘솔에 찍히지 않습니다.

Screenshot 2023-02-01 at 12.30.13 AM.png

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

지금 여기에 에러가 발생하고 있는 부분을 말씀드리는 것입니다. 101번째 줄에서 에러 난다고 되어 있습니다.

0

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

saga addComment에서

console.error(err.response.data) 대신 console.error(err)만 해서 에러 확인하세요.

신영 유님의 프로필 이미지
신영 유

작성한 질문수

질문하기