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

김소진님의 프로필 이미지

작성한 질문수

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

게시글 삭제 saga 작성하기

게시글 삭제 시, 얕은 복사를 사용하지 않는 이유가 궁금합니다.

해결된 질문

작성

·

199

0

[ 게시글 삭제 saga 작성하기 ] 수강 중 질문 드립니다.

이전 댓글을 추가할때는 reudce에서

    case ADD_COMMENT_SUCCESS: {
      const postIndex = state.mainPosts.findIndex(v => v.id === action.data.postId);
      const post = { ...state.mainPosts[postIndex] }; // 얕은 복사
      const Comments = [action.data, ...post.Comments];
      const mainPosts = [...state.mainPosts];
      mainPosts[postIndex] = {
        ...post,
        Comments,
      };
      return {
        ...state,
        mainPosts,
        addCommentLoading: false,
        addCommentDone: true,
        addCommentError: false,
      };
    }

이런식으로 얕은 복사를 하셨는데요.

 

      case REMOVE_POST_SUCCESS: {
      const mainPosts = state.mainPosts.filter(v => v.id !== action.data.id);

      return {
        ...state,
        mainPosts,
        removePostLoading: false,
        removePostDone: true,
        removePostError: false,
      };
    }

게시글을 삭제할때는 왜 'state.mainPosts'를 얕은 복사해서 조작하지 않는 건지 궁금합니다.

혹시 filter가 기존 state.mainPosts 을 수정하지 않으며, 새로운 배열을 return하기에 얕은 복사가 필요없는 건가요?

 

답변 기다리겠습니다.

감사합니다 :)

답변 1

1

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

네 맞습니다. filter가 새로운 배열을 리턴해서 그렇습니다.

김소진님의 프로필 이미지
김소진
질문자

감사합니다!