인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

SS님의 프로필 이미지
SS

작성한 질문수

따라하며 배우는 리액트 A-Z[19버전 반영]

리액트 불변성 지키기

Array 불변성에 대해 질문합니다

작성

·

233

0

앞선 강의의 Lists.js 파일에서 handleEnd 함수를 만들때,

리액트 불변성을 지켜주기 위해

const newTodoDate = todoData;

라는 코드를 사용해서 todoData를 newTodoData에 담아

준 후 newTodoDate.splice를 사용하는 것으로 이해했는데,

 

본 강의에서는

const array = [1,2,3,4]

const sameArray = array;

위와 같이 sameArray에 array를 담아 준 후

sameArray.push(5); 코드를 실행하니

array에도 5가 담기면서 불변성이 지켜지지 않은 것으로 보이는데요

 

둘은 어떤 차이가 있나요?

제가 무엇을 잘못 이해하고 있는지 궁금합니다

답변 1

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요

splice 메소드는 새로 복사를 해주기 때문에 불변성이 지켜지지만 push 메소드는 그렇지 않습니다.

원본 데이터를 변경하지 않는 메소드 => spread operator, map, filter, slice, reduce

원본 데이터를 변경하는 메소드  => splice, push

이렇게 구분해주시면 됩니다.

감사합니다.

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

splice, push 둘 다 원본 데이터를 변경시키므로 불변성이 보장되는 메소드들이 아닌데, 그 둘 사이에서도 차이가 존재한다는 말씀이시죠? 감사합니다.

SS님의 프로필 이미지
SS

작성한 질문수

질문하기