리덕스 미들웨어
는 액션과 리듀서 사이에서 동작합니다.
리덕스가 적용된 앱에서, 액션이 발생하면 리듀서가 변화를 발생시킵니다. 이때 미들웨어를 추가하면, 액션이 발생하고 리듀서가 변화를 일으키기 전에 미들웨어가 동작을 하게 됩니다. 따라서 리덕스 미들웨어는 액션과 리듀서 사이에서 동작하는 것이라고 볼 수 있습니다.그렇다면 무엇을 위해 미들웨어를 중간에 끼워넣어서 사용해야 할까요?
우리가 알고있는 대로라면 리덕스는 순서대로 동작합니다. 액션이 발생해야만 리듀서가 동작을 처리하고 그에 따른 상태를 반환하게 됩니다. 이러한 정해진 순서대로 동작하는 것만으로는 해결할 수 없는 일들이 존재합니다.
대표적으로 setTimeout
의 역할 같은 시간 지연이나 API
를 받아오는 비동기 작업들을 처리하기 위해서 리덕스 미들웨어를 사용해야 합니다.
다시 말해 리덕스 미들웨어
를 사용하는 이유는 리덕스 환경에서 비동기 작업을 관리하기 위함이라고 할 수 있습니다. 리덕스 미들웨어를 직접만들 수도 있지만 대부분 오픈소스 미들웨어를 많이 사용하게 됩니다. 대표적으로 액션에 따른 log를 남기는 redux-logger
, 비동기 작업을 처리하는 redux-thunk
, redux-saga
가 있습니다.다음 포스트에서 본격적으로 이 미들웨어들을 다뤄보도록 하겠습니다.