카테고리 없음

[리액트 파보기] (2) Javascript위에서 동작하는 react

lovvepearl 2022. 5. 14. 20:30

리액트는 자바스크립트 위에서 동작하는 라이브러리이다.

리액트의 동작원리를 이해하기 위해서는

오브젝트와 오브젝트 불변성에 대한 이해가 필요하다.

 

원시형데이터(문자, 숫자)를 변수에 할당하면 데이터 자체가 변수에 할당되지만,

오브젝트를 변수에 할당하면 오브젝트의 주소, 즉 참조값이 할당된다.

 

동일한 참조값을 가지고 있는 두 변수가 있다고 가정한다면,

메모리는 2개이지만, 참조값은 1개이다.

 

이말인 즉슨, 참조값을 가진 오브젝트가 변수 중 어느 한곳에서 수정되면

같은 참조값을 가진 모든 오브젝트가 수정되는 것이다.

 

참조값 자체는 바꿀 수 없지만 오브젝트의 데이터는 수정이 가능한 것이다.

 

리액트에서 자주 사용되어지는 Spread Operator를 사용하면

오브젝트를 복제하여 완전히 새로운 오브젝트를 만들게 되는데

오브젝트 안의 아이템의 참조값 또한 복제하여 가져오게 된다.

 

이때, 원본 오브젝트에서 아이템의 데이터 수정을 하게 되면

새롭게 만든 오브젝트에 반영이 될까?

정답은 '반영이 된다' 이다.

 

그 이유는 새롭게 만들어진 오브젝트 껍데기 안의 아이템의

참조값은 원본과 동일하기 때문이다.

 

여기서 Spread Operater는 얕은 복제(Shallow-cloning)를 한다는 점을 알 수 있다.