상태 관리를 알아야 하는 이유


상태란


객체지향 프로그래밍에서 기본 단위가 객체이고, 객체간의 상호작용을 통해 프로그램이 동작되는데, 이 때 객체가 가지는 데이터를 상태라 할 수 있습니다.

아래 ToDo List 예제를 통해 상태에 대해 알아봅니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b613fbc5-f165-450c-a69d-2161ad12582b/2020-05-14T15_18_34.677image.png

위 ToDo List앱이 가져야 할 상태는 바로 todoitems 입니다.

그런데 이 데이터를 여러군데에서 관리한다면 무결성을 가져가기 힘듭니다.

다음으로 위 화면UI를 컴포넌트 형태로 더 분리해서 살펴 보겠습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d88ed2d1-47be-4f57-968a-bff711bf4edc/2020-05-14T17_59_13.916image.png

위와같이 컴포넌트를 분리하게되면 TodoApp이라는 컴포넌트 내에 TodoInput, TodoList, TodoCount 컴포넌트들이 포함되어 있습니다. 이렇게 분리한 상태에서 데이터를 한 곳에서 관리한다면, TodoApp 컴포넌트에서 하고, 다른 컴포넌트들은 그 데이터를 받아와서 보여주기만 한다면 데이터를 일괄되게 관리하기 편해집니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/352b0546-e66b-44c3-a5f4-c89d9cb16e67/2020-05-14T20_37_03.176image.png

그래서 자주 사용하는 패턴이 setStaterender 함수의 구현입니다.