• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

Images와 [...Images]

20.12.30 22:14 작성 조회수 125

0

Images는 이미 배열인데 let newImages = Images 라고 하지 않고 let newImages = [...Images] 라고 하는 이유는 뭔가요??

답변 3

·

답변을 작성해보세요.

1

이종수님의 프로필

이종수

2021.01.01

전개연산자는 [], {}, ()여기에서만 사용 가능해서 [...Images]를 하신 것 같습니다 

0

k0502s님의 프로필

k0502s

2022.02.19

newImages = Images 이렇게 원본 배열을 그대로 넣어버리면 newImages는 Images가 가리키는 값의 위치를 가리키게 됩니다.

그러면 newImages의 요소를 삭제했을 때, 같은 위치를 참조하는 원본 배열(Images)도 변경되어버립니다.

원본인 Images를 직접 잘라버리는 건 불변성 법칙에 위배되기 때문에 newImages라는 변수를 만들고,

spread operator로 Images 배열 안에 있는 요소들을 newImages 배열 안에 그대로 넣어줍니다.

그래서 내용은 같지만 완전히 새로운 배열을 만들어주는 겁니다.

이렇게 완전히 새로운 배열에서 편집을 한 뒤에, setImages로 Images 상태를 변경시켜줍니다.

0

태성기님의 프로필

태성기

2021.04.07

저도 잘모르지만 images는 state라서 setImages로만 변경이 가능한것 같네요

let newImages = Images 이렇게 하면 

newImages는 Images에 대한 참조변수가 되기에

let newImages = [...Images] 를 해서

Images를 복사하신것 같습니다.