• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

23.07.14 13:57 작성 조회수 154

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가 새로운 배열을 리턴해서 그렇습니다.

김소진님의 프로필

김소진

질문자

2023.07.14

감사합니다!