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


7.7 Redux와 React 연동하기

지금까지 배운 내용들을 토대로 해서 Redux와 React를 연동하는 과정을 한 번 쭉 정리해보도록 하겠습니다.

  1. Redux Store 생성
  2. Redux Action Type 정의 및 Action Creator와 Reducer 구현
  3. React Component 구현
  4. Container 만들기
    1. mapStateToProps()
    2. mapDispatchToProps()
    3. connect()
  5. Provider를 사용해 store 전달하기 (Higher Order Component, HOC)
  6. Container Component 렌더링

여기나온 내용은 Redux와 React를 연동하는 순서를 나타낸 것입니다.
이전 장에서 나왔던 Redux와 일반적인 UI를 연동하는 순서와 거의 유사하지만, 리액트에 특화되어 있기 때문에 살짝 다른 부분들이 있습니다.
참고로 여기서 설명하는 방식은 리액트 훅이 나오기 이전에 리액트 클래스 컴포넌트를 사용할 때 주로 사용하던 과거의 방법입니다.
최근에는 대부분 리액트 훅을 사용하는 방법을 사용하는데 Redux와 관련된 훅에 대해서는 뒤에 나올 강의에서 배울 예정입니다.

여기서 예전 방식을 먼저 배우는 이유는, 이러한 과거의 방법들에 대해서 먼저 배운 이후에 현재 사용되는 방식을 배워야 기초가 더 탄탄해지기 때문입니다.
그냥 처음부터 무작정 Redux 훅을 사용하게 되면, 내부의 작동방식과 원리에 대해 잘 모른채로 Redux를 사용하게 될 수 밖에 없습니다.

자, 그럼 Redux와 React를 연동하는 과정을 순서대로 하나씩 살펴볼까요?

먼저, Redux Store를 생성합니다.
이 과정은 Redux와 일반적인 UI를 연동하는 과정과 동일하게 Single source of truth를 만드는 과정입니다.

두 번째로는 Redux에 필요한 Action Type들을 정의하고 Action Creator와 Reducer를 구현하는 과정입니다.
이 과정은 어떻게 보면 연동의 과정이라기 보다는 Redux 설계의 과정에 가깝다고 볼 수 있습니다.
하지만 Redux를 사용하려면 이런 과정이 꼭 필요하기 때문에 넣어두었습니다.

다음 세 번째로는 Redux를 연동할 리액트 컴포넌트를 구현해야 합니다.
이 컴포넌트는 실제 화면에 보이는 UI를 담당하게 됩니다.
이전 실습에서는 HTML 태그들을 사용해서 UI를 만들었지만, Redux와 React를 연동하는 경우에는 리액트 컴포넌트를 사용해서 UI를 구성하게 됩니다.

네 번째 단계는 실제로 Redux와 React를 연결하는 과정이라고 할 수 있습니다.
앞에서 배운 Redux의 mapStateToProps(), mapDispatchToProps(), 그리고 connect() 함수를 사용해서 Container를 만드는 과정입니다.
이 과정을 통해 Redux에 연결 된 리액트 컴포넌트가 만들어지게 됩니다.

하지만 이렇게 Container만 만드는 것으로는 리액트 컴포넌트에서 Redux store에 접근할 수 없습니다.
그래서 다섯 번째 단계에서 앞에서 배운 Provider라는 react-redux 라이브러리의 Higher Order Component를 사용해서 store를 하위 컴포넌트에 전달하도록 만듭니다.
이렇게 되면 Provider의 모든 하위 컴포넌트에서 Redux store에 접근할 수 있게 됩니다.

마지막 여섯 번째는 이렇게 만들어진 Container Component를 실제 화면에 렌더링 하는 과정입니다.
여기서 주의할 점은 렌더링 할 Container Component가 다섯 번째 단계의 Provider 컴포넌트보다 하위 컴포넌트여야 한다는 점입니다.

지금까지 살펴본 이러한 과정을 통해서 Redux와 React를 연동해서 사용할 수 있습니다.

이 과정도 글로만 보면 잘 와닿지 않을 수 있습니다.
그래서 이어지는 실습에서 직접 단계별로 하나씩 구현해보면서 익혀볼 예정이니, 여기서는 Redux와 React를 연동할 때 어떤 작업들이 필요한지에 대해서만 잘 이해하고 넘어가기 바랍니다.


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

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