49일차 (CS 23, 24)
상태의 불변성이 중요한 이유
먼저 첫 번째 이유는 불변성을 유지하면 상태가 어떻게 변경될지 예측하기가 쉽기 때문이다. 이는 디버깅을 용이하게 하며, 코드의 안정성을 높인다. 두 번째 이유는 불변성을 지키면서 상태를 업데이트하는 패턴을 사용하면 코드의 명확성이 높아지기 때문이다. 세 번째 이유는 리액트와 같은 라이브러리는 상태나 Props의 변경을 감지하기 위해 얕은 비교를 수행하는데, 불변성을 유지하면 이러한 비교가 효율적으로 이루어지며, 불필요한 렌더링을 방지하여 성능을 최적화할 수 있기 때문이다.
결론적으로 상태의 불변성을 유지하는 것은 프론트엔드 개발에서 안정성, 성능, 코드의 명확성 등 다양한 이점을 제공하기 때문에, 상태를 업데이트할 때는 항상 불변성을 유지하는 방식을 사용하는 것이 좋다.
라이프사이클이 의미하는 바에 대해서 설명해주세요.
라이프사이클은 일반적으로 어떤 객체나 시스템이 생성되어 사용되고, 종료되는 전체 과정을 의미한다. 즉, 특정 객체나 시스템이 처음부터 끝까지 겪는 여러 단계나 상태를 나타낸다고 볼 수 있다.
컴포넌트는 일반적으로 생성 -> 마운트 -> 업데이트 -> 언마운트의 단계를 거친다. 먼저 생성 단계는 컴포넌트가 메모리에 생성되는 단계이다. 이때 초기 상태와 Props가 설정된다. 두 번째, 마운트 단계는 컴포넌트가 화면에 처음으로 그려지는 단계를 말한다. 세 번째인 업데이트는 컴포넌트의 상태나 속성이 변경되어 화면에 그려지는 단계를 말한다. 마지막 언마운트는 컴포넌트가 화면에서 사라지는 단계를 말한다.
이러한 라이프사이클은 컴포넌트가 어떻게 동작하고, 언제 어떤 작업을 수행해야 하는지를 이해하는 데 중요하다. 예를 들어, 외부 데이터를 가져오는 작업은 컴포넌트가 화면에 처음 그려질 때(마운트) 수행하는 것이 적절하며, 불필요한 리소스를 정리하는 작업은 컴포넌트가 화면에서 사라질 때(언마운트) 수행하는 것이 적절하다. 이러한 라이프 사이클의 이해는 컴포넌트 동작을 최적화하고, 예상치 못한 버그나 문제를 방지하는 데 중요한 역할을 한다.