Written by
angular-style
on
on
불변성
불변성
처음 리액트를 접하면서, 가장 당황했던 부분이 리랜더링이다.
변수를 새롭게 할당해줄 때마다 해당 컴포넌트가 리랜더링되고, 상태관리를 제대로 못해주게되면 모든 컴포넌트가 리랜더링이 발생되는 상황이 생길 수 있다.
angular와 다른 경험이라 매우 당황했다. 상태를 수정할 때 이러한 경험을 하지 못했기 때문에 더욱 크게 다가왔다. 그래서 처음에는 너무 이해가 안갔다. 왜 이런식의 구조가 되었는지가,, 아무리 virtual dom이 리랜더링이 된다고 하더라도 프로젝트가 커지고 하면 결국 기능적인 문제가 될 것이다라고 생각했다.
이 생각은 많은 사람들이 다루었고, 불필요한 곳에서 리랜더링이 발생되지 않도록, 최적화를 많이 시킨다고한다. 이를 더해 불변성을 유지해주고, 최적화를 도와주는 라이브러리를 도입하여 개발의 편의를 더해주고 있다.
ex) immer, immutable
(앵귤러에서도 사실 이런 이슈가 있을 수도 있지만, 내가 모르는 것일수도,,)
한가지 더 아쉬운 점은 불변성을 지키기 위해 기존 push, splice 등의 메소드 등을 사용하지 못하고, 기존 변수를 concat, slice 등을 통해 변경 후 새로운 변수에 다시 담에서 사용하는 식으로 이루어진다. 아직 얕은 지식에 있어, 불편함이 존재한다고 생각이 들었다.
여튼 결과적으로는 리액트에서는 상태의 불변성이 매우 중요하다는 것을 알았다.
from http://sangwonny.tistory.com/8 by ccl(A) rewrite - 2021-05-15 21:00:28