리덕스 미들웨어는 action을 dispatch했을 때 reducer에서 이를 처리하기에 앞서 사전에 지정된 작업을 실행할 수 있게 해줍니다. action과 reducer 사이의 중간자 역할을 합니다.
전달받은 action을 단순히 콘솔에 기록하거나, 전달받은 액션 정보를 기반으로 액션을 아예 취소하거나, 다른 종류의 액션을 추가하는 등 다양한 역할을 담당할 수 있습니다.
기본적으로 reducer는 순수 함수이기 때문에 reducer에게 전달하기 전, 데이터를 가공할 때 미들웨어를 사용하고 미들웨어는 함수 형태로 데이터를 반환합니다.
미들웨어의 기본 구조
export const middleware = () => {
return function () {
// 반환할 함수에서 하는 필요한 작업들
}
}
비동기 작업 처리
리덕스 미들웨어로 비동기 작업을 수행해야 하는 경우는 매우 다양합니다. 가령, presentational component에 API로 요청한 정보를 출력해야 하는 액션이 발생할 경우, 처리하는 시간이 필요하기 때문에 이를 비동기 작업으로 수행하게 됩니다