Redux의 주요 개념으로는 Store, Action, Dispatch, Reducer가 있으며,
Store는 Redux의 전역 저장소로 상태가 관리되는 오직 하나의 공간입니다.
Action은 말 그대로 어떤 액션을 취할 것인지 정의해 놓은 객체입니다.
Dispatch는 Reducer로 Action을 전달해주는 함수,
Reducer는 Dispatch에게서 전달받은 Action 객체의 type 값에 따라서 상태를 변경시키는 함수입니다.
Action(액션) 객체가 dispatch() 메소드에 전달되면,
dispatch(액션)를 통해 Reducer를 호출하고,
Reducer는 새로운 Store 를 생성합니다.
이러한 Redux의 개념들은 서로 긴밀하게 연결되어 있습니다. 디스패치된 액션은 미들웨어를 거쳐 리듀서에 전달되어 새로운 상태가 생성됩니다. 생성된 상태는 스토어에 저장되어 전체 애플리케이션에서 사용됩니다.
다른 상태 관리 도구인 MobX나 Vuex와 비교하면, Redux는 상태가 변경될 때마다 모든 컴포넌트를 다시 렌더링하는 방식을 취합니다.
반면 MobX나 Vuex는 데이터의 변경이 있을 때 해당 데이터를 사용하는 컴포넌트만 다시 렌더링합니다. 또한 Redux는 코드량이 많아져서 초기 개발 시간이 길어질 수 있지만, 유지보수나 큰 규모의 애플리케이션에서 유리한 장점을 갖습니다.
반면 MobX나 Vuex는 초기 구성이 쉽지만, 큰 규모의 애플리케이션에서는 불편함이 있을 수 있습니다.