해결된 질문
작성
·
479
0
안녕하세요 제로초 님,
redux saga immer, faker 까지만 들었구요, 백엔드는 안 만들었고요.
faker가 문제가 있다길래,
import { faker } from '@faker-js/faker';
이거를 대신해서 설치해서 했는데, 이거의 문제는 아닌거 같고요.
ADD_COMMENT_SUCCESS가
기존의 post에서는 작동을 하는데,
새로운 post에서만 작동 안 하는 문제가 있습니다.
새로운 post.id가 동작을 안 하나 싶어
const post = draft.mainPosts.find((post)=> {
console.log(post.id == action.data.postId);
return post.id == action.data.postId;
});
를 해봤는데 역시 true가 나옵니다.
아래는 브라우저 결과 사진들 입니다.
로그인 안 했을 때,
로그인 하고 기존의 post에 comment를 달았을 때 -> 정상적으로 동작 함.
로그인 하고 새로운 post을 하나 추가 -> 정상적으로 동작 함.
username이 바뀌는 건 faker를 썼고, userId만 그래도 컴포넌트에서 받아서 써서 지금 ADD_POST_TO_ME 동작해서 1에서 2로 바뀌었구요.
그러나
새로운 post에 comment를 달았을 때 -> 콘솔로그가 true가 나옴에도 동작을 하지 않음.
기존의 post에도 comment가 안 달리는 거면 제가 실수를 한게 분명한데, 새로운 post에만 동작을 안 하는게 이상합니다.
ADD_COMMENT_REQUEST를 보냈을 때에도, 갑자기 mainPosts가 초기화 되거나 그런 것도 아니었습니다. 만약 그랬다면 콘솔로그가 false가 나왔어야 합니다.
감사합니다!
답변 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 값을 콘솔로 찍어왔더니
이렇게 콘솔에 뜨는데, {...}이부분은 클릭이 안되네요
0
이미 ADD_COMMENT_SUCCESS로 넘어갔기 때문에
reducer에서 console.log(post.id == action.data.postId);가 true가 나온 것 같습니다.
catch부분에서, console.error(err)을 해봤는데
콘솔에 찍히지 않습니다.
0
새 게시글 push 하실 때 Comments: []는 안 넣으신 듯 하네요. 그래야 여기에 댓글을 넣을 수 있습니다.