프로그래밍/react

redux 와 MobX 의 공통점 차이점과 특징 정리

플로어코딩 2024. 3. 8. 11:35

 

공통점

MobX는 JavaScript 애플리케이션의 상태 관리를 단순하게 만드는 라이브러리 중 하나입니다. 

주로 React와 함께 사용되지만, 다른 프레임워크와도 통합할 수 있습니다. 
MobX는 반응형 상태 관리 패턴을 구현하여 데이터의 변화를 자동으로 감지하고 관련된 부분을 자동으로 업데이트합니다.

 

 

차이점

 

상태 관리의 접근 방식:
Redux: 단일 스토어를 사용하고, 불변성을 유지하며 상태를 변경하는 "액션"을 통해 상태를 업데이트합니다. 리듀서 함수를 사용하여 액션에 따라 상태를 변경합니다.

 

MobX: MobX는 객체지향 프로그래밍의 개념을 활용하여 상태를 관리합니다. 관찰 가능한 상태와 액션을 사용하여 상태를 변경하고, 반응(Reactions)을 통해 변경에 반응합니다. MobX는 불변성을 강제하지 않습니다.
복잡성:

 

복잡성 


Redux: Redux는 보다 엄격한 패턴을 따르고, 애플리케이션의 복잡성을 관리하기 위해 명시적인 규칙을 요구합니다. 이는 대규모 애플리케이션의 개발 및 유지보수에 도움이 됩니다.

 

MobX: MobX는 보다 자유로운 패러다임을 제공하며, Redux보다는 보다 쉽게 시작할 수 있습니다. 그러나 대규모 애플리케이션에서는 코드 구조의 일관성과 유지보수에 대한 고려가 필요합니다.
프로그래밍 경험:

 

사용성
Redux: 함수형 프로그래밍의 개념과 Redux의 특별한 패턴을 이해해야 합니다. 액션, 리듀서, 스토어 등의 용어와 개념을 숙지해야 합니다.

 

MobX: 객체지향 프로그래밍의 개념을 더 중요시하며, 객체와 클래스를 사용하여 상태를 관리하는 것에 익숙해져야 합니다.
성능:

성능

Redux: Redux는 불변성을 유지하고 순수 함수를 사용하여 상태를 변경하기 때문에 상태 변화를 추적하기 쉽고 예측 가능합니다. 이로 인해 디버깅이 쉬우며, 개발자가 상태 변화를 정확히 파악할 수 있습니다.

 

MobX: MobX는 자동으로 의존성 추적을 수행하고, 필요한 경우 최적화를 수행하여 성능을 향상시킵니다. 그러나 일부 경우에는 이러한 자동화가 예상치 못한 동작을 초래할 수도 있습니다.

 

 

MobX의 특징


Observable State(관찰 가능한 상태): MobX에서는 관찰 가능한 상태를 정의합니다. 이는 어플리케이션의 상태가 변화할 때 MobX가 이를 자동으로 감지하고 이에 반응할 수 있도록 하는 기초입니다.

Computed Values(계산된 값): 계산된 값은 다른 상태에 의존하여 동적으로 파생되는 값입니다. MobX는 계산된 값을 추적하고, 그 값이 변경되는 상황에 따라 자동으로 다시 계산합니다.

Reactions(반응): MobX는 상태의 변경을 감지하고, 그에 따라 반응할 수 있는 메커니즘을 제공합니다. 이를 통해 UI 업데이트, 로깅 등을 처리할 수 있습니다.

Actions(액션): 상태를 변경하는 함수를 액션(Action)이라고 합니다. MobX는 명시적으로 정의된 액션 함수 내에서만 상태를 변경할 수 있도록 권장합니다. 이를 통해 상태 변경이 추적 가능하고 예측 가능한 방식으로 이루어집니다.

쉬운 통합: MobX는 다른 상태 관리 라이브러리나 프레임워크와 함께 사용할 수 있습니다. React와 함께 사용될 때 특히 잘 동작합니다.

 

 

Redux의 특징

React와 Redux를 결합하여 개발할 때 React 컴포넌트와 Redux 스토어 간의 통합을 간편하게 만들어 줍니다. 아래는 React-Redux의 주요 특징입니다.

 

컴포넌트와 스토어의 연결: React-Redux는 React 컴포넌트와 Redux 스토어를 연결하는 Provider 컴포넌트를 제공합니다. Provider 컴포넌트는 애플리케이션의 최상위 컴포넌트에 추가되어 전역 상태를 모든 하위 컴포넌트에 제공합니다.

컨테이너 컴포넌트와 프레젠테이션 컴포넌트의 분리: React-Redux는 컨테이너 컴포넌트와 프레젠테이션 컴포넌트를 분리하는 패턴을 촉진합니다. 컨테이너 컴포넌트는 Redux와 통신하고 상태를 가져오며, 프레젠테이션 컴포넌트는 UI를 렌더링합니다. 이렇게 분리함으로써 코드를 더 관리하기 쉽고 재사용성을 높일 수 있습니다.

Connect 함수: React-Redux는 connect 함수를 제공하여 컨테이너 컴포넌트를 생성합니다. connect 함수를 사용하면 컴포넌트를 Redux 스토어에 연결하고 필요한 상태와 액션을 props로 전달할 수 있습니다.

컴포넌트의 성능 최적화: React-Redux는 컴포넌트의 불필요한 렌더링을 방지하기 위해 성능 최적화를 제공합니다. mapStateToProps와 mapDispatchToProps를 통해 필요한 데이터만 전달하고, shouldComponentUpdate나 React.memo를 사용하여 렌더링 성능을 향상시킬 수 있습니다.

DevTools 통합: Redux DevTools를 React-Redux와 함께 사용하여 애플리케이션의 상태를 모니터링하고 디버깅할 수 있습니다. 이를 통해 개발 과정에서 상태의 변화를 추적하고 문제를 해결할 수 있습니다.