처음 만난 리덕스 (Redux) 문서


3.1 Store

영어 단어 Store는 동사로 저장하다, 보관하다 라는 뜻을 갖고 있습니다.
Store와 비슷한 단어로 저장장치를 의미하는 Storage라는 단어가 있죠.
클라우드 컴퓨팅이나 서버쪽 경험이 있는 분들은 Storage라는 단어를 많이 들어봤을 겁니다.

Redux에서의 Store 또한 비슷한 의미를 갖고 있습니다.
Redux Store는 Redux의 데이터들을 저장하기 위한 저장소라고 보면 됩니다.

하지만 여기서 저장이라는 단어 때문에 약간 혼동이 있을 수 있는데,
Redux Store는 우리가 컴퓨터에 파일을 저장하는 것처럼 실제로 저장하는 것이 아니라는 점입니다.

State management vs State persistence

여기서 우리는 State managementState persistence에 대해 생각해 볼 필요가 있습니다.

State management는 말 그대로 상태를 보관하는 것이 아니라 관리하기만 하는 것이고, State persistence는 지속시키다라는 뜻의 영어 단어 persist를 사용해서 상태를 지속시켜주는 것입니다.

그리고 Redux는 state management 라이브러리 입니다.
즉, Redux는 상태를 관리하기 위한 라이브러리이지 상태를 저장하고 지속시키기 위한 목적의 라이브러리는 아니라는 것이죠.
그래서 실제로 Redux Store의 데이터들은 컴퓨터의 하드디스크나 SSD 같은 저장장치에 저장되지 않습니다.

그렇다면 Redux Store는 실제로 데이터들을 어떻게 관리할까요?
Redux Store는 JavaScript 객체나 배열 같은 변수를 통해 데이터들을 관리합니다.

그리고 우리가 아는 것처럼, JavaScript의 변수들은 메모리에 올라가게 되죠.
이 메모리는 휘발성이기 때문에 컴퓨터 전원이 꺼지거나 프로그램이 다시 시작되면 이전 데이터는 모두 날아가고 초기화 됩니다.

Redux Store 역시 웹브라우저를 새로고침 하거나 컴퓨터를 재부팅 하면 데이터가 모두 날아가게 됩니다.
데이터들이 메모리 위에 존재하기 때문이죠.

이러한 Redux Store의 특징을 잘 이해하고 있는 것이 중요합니다.
Redux를 사용하다 보면 분명 Store에 데이터를 넣었는데, 어느 순간 초기화 되어 있는 것을 발견하게 될 것이기 때문입니다.
만약 이러한 원리를 모른채 Redux를 사용한다면 왜 데이터가 날아갔는지 조차도 알 수 없을 것입니다.

Redux State Tree

그리고 Redux Store에 데이터들은 이렇게 tree형태로 저장됩니다.
이러한 Tree를 State Tree라고 부릅니다.
그리고 Redux의 세 가지 원칙 중 첫 번째 원칙인 Single source of truth에 따라, 이러한 State Tree는 단 하나만 존재합니다.
하나의 Tree에 계층 구조로 각각의 state들이 들어있는 형태라고 보면 됩니다.


마지막 업데이트: 2023년 07월 14일 00시 00분

이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.