개발자가 되기 위한 꿀팁 및 정보

[기술면접준비] Redux 상태관리의 주요 개념들과 연결 관계, 다른 상태관리 도구와 비교 설명

푸른매실 2023. 4. 6. 11:31

Redux는 React와 함께 사용되는 상태 관리 라이브러리로, 복잡한 애플리케이션에서 상태를 효율적으로 관리하기 위해 사용되며,  Flux 아키텍처의 구현체 중 하나입니다. Redux의 주요 개념들과 연결 관계는 다음과 같습니다.

 

 

- Store
Redux의 중심에는 Store가 있습니다. Store는 애플리케이션의 상태를 저장하는 객체이며, 애플리케이션에서 발생하는 모든 액션에 대해 상태를 업데이트합니다.


- Action
Action은 Redux에서 상태를 업데이트할 때 사용되는 객체입니다. Action은 type 속성을 필수적으로 가져야 하며, 추가적으로 payload와 meta 속성을 가질 수 있습니다. Action은 일반적으로 상태를 업데이트하는 데 필요한 데이터를 제공합니다.

- Reducer
Reducer는 상태를 업데이트하는 함수입니다. Reducer는 이전 상태와 액션을 매개변수로 받아 새로운 상태를 반환합니다. Reducer는 순수 함수이며, 이전 상태를 변경하지 않고 새로운 상태를 반환해야 합니다.

- Dispatch
Dispatch는 액션을 발생시키는 함수입니다. Dispatch는 Store의 메서드 중 하나이며, 액션을 인수로 전달하고 상태를 업데이트합니다.

- Selector
Selector는 상태에서 필요한 값을 추출하는 함수입니다. Selector는 상태를 직접 참조하지 않고, Store의 getState() 메서드를 사용하여 상태를 가져옵니다. Selector는 일반적으로 mapStateToProps 함수 내에서 사용됩니다.

이러한 개념들은 Redux에서 상태를 관리하는 데 사용됩니다. Action은 상태를 업데이트하는 데 사용되고, Reducer는 업데이트된 상태를 반환합니다. Dispatch는 액션을 발생시키며, Selector는 필요한 값을 추출합니다. 이 모든 개념은 Store에서 함께 작동하여 애플리케이션의 상태를 관리합니다.

 


 

다른 상태 관리 도구와 비교하여 Redux의 장단점은 다음과 같습니다.

- 장점
예측 가능한 상태로 업데이트: Redux는 모든 상태 업데이트가 일관된 방식으로 수행되도록 보장합니다. 이로 인해 상태 변경에 대한 예측 가능성이 향상되며, 디버깅이나 유지 보수가 쉬워집니다.

중앙 집중화된 상태 관리: Redux는 단일 스토어를 사용하여 중앙 집중화된 상태 관리를 제공합니다. 이로 인해 상태 업데이트가 단순해지며, 여러 컴포넌트에서 공유되는 상태를 쉽게 관리할 수 있습니다.

개발자 도구 사용: Redux는 개발자 도구를 제공하여 상태의 변화를 쉽게 추적하고 디버깅할 수 있습니다.

 


- 단점
학습 곡선: Redux는 Flux 아키텍처의 구현체 중 하나이기 때문에, 학습 곡선이 다소 높을 수 있습니다. 또한 Redux를 올바르게 사용하기 위해서는 많은 기본 지식이 필요합니다.

코드 양: Redux는 상태 업데이트를 위한 추가적인 코드를 작성해야 합니다. 이로 인해 코드 양이 증가할 수 있으며, 간단한 애플리케이션에서는 사용하기에 과도할 수 있습니다.

복잡성: Redux는 복잡한 애플리케이션에서 효과적이지만, 간단한 애플리케이션에서는 사용하기에 과도할 수 있습니다.

 


다른 상태 관리 도구와 비교하여 Redux는 예측 가능한 상태 업데이트와 중앙 집중화된 상태 관리를 제공하며, 개발자 도구를 포함한 다양한 장점을 가지고 있습니다. 단점으로는 학습 곡선과 코드 양, 그리고 복잡성이 있습니다. 따라서 Redux는 복잡한 애플리케이션에서 효과적인 상태 관리를 위해 사용됩니다.