[flutter] Redux의 단방향 데이터 흐름에 대해 설명해주세요.

Redux는 상태 관리 패턴 중 하나로, 애플리케이션의 상태를 예측 가능하고 일관적으로 유지하기 위해 사용됩니다. Redux의 핵심 개념은 단방향 데이터 흐름입니다.

Redux의 주요 개념

  1. Store: 애플리케이션의 상태(state)를 저장하는 곳으로, 중앙 집중화된 데이터 저장소입니다. 애플리케이션 안에서 단 하나의 스토어가 존재하며, 이는 불변 객체 형태로서 상태를 보존합니다.

  2. Actions: 상태를 변경하기 위한 정보를 담고 있는 객체입니다. 액션은 애플리케이션에서 어떤 변화가 필요한지 나타내며, “type”이라는 필수 속성을 가지고 있습니다.

  3. Reducers: 상태 변경을 처리하는 함수입니다. 이는 이전 상태와 액션을 받아 새로운 상태를 반환하는 순수한 함수입니다. 액션의 type에 따라 다른 동작을 수행하고, 상태를 수정합니다.

Redux의 데이터 흐름

Redux의 데이터 흐름은 단방향입니다. 사용자가 액션을 실행하면, 액션은 먼저 디스패치(dispatch)됩니다. 디스패치된 액션은 미들웨어를 통과한 후에 리듀서에 전달됩니다. 리듀서는 현재 상태와 액션을 받아 새로운 상태를 반환합니다. 이후, 스토어가 새로운 상태를 저장하고, 뷰(UI)는 스토어에서 상태를 읽어와 업데이트합니다. 이 과정은 사용자 액션에 따라 계속 반복되는 단방향 데이터 흐름입니다.

Redux를 사용하는 이유

Redux는 복잡한 애플리케이션에서 데이터 관리를 쉽고 예측 가능하게 만들어줍니다. 상태의 변경 로직이 리듀서로 통합되고, 단일 스토어에 모든 상태가 저장되므로 상태 추적이 쉽습니다. 또한, 애플리케이션의 상태 변화에 따른 UI 업데이트를 효율적으로 관리할 수 있습니다.

Redux의 단방향 데이터 흐름은 코드 유지 보수성을 높이고 디버깅을 쉽게 만들어줍니다. 또한, 애플리케이션의 상태가 예측 가능하게 관리되므로 테스트 케이스 작성과 테스트하기 쉽습니다.

참고 자료