리액트에서는 외부 API 서버를 연결할 때는 API 요청에 대한 상태 관리도 잘해야 한다.요청을 시작할 때 로드 중임을 요청을 받아와 성공적으로 응답했을 때 실패했을 때를 구분하여 코드를 작성하여야 한다. 이러한 비동기 작업을 관리할 필요가 있는 경우에는 미들웨어를 사용하는 것이 효과적이다.
미들웨어란 action이 dispatch에 의해 레듀서로 전달되기 전에 무언가를 추가하고, 반대로 중간에 액션을 가로챌 수 있다. 즉, action과 reducer의 중간 지점이라고 생각하면 된다.
middleware는 함수로 할 수 있다. 그리고 적용시키기 위해서는 redux 라이브러리로부터 apply Middleware를 받아온 후 create Store()의 두 번째 인자에 middleware 함수를 넣으면 된다.middleware는 위와 같이 store(redux store)=>next=>action을 받는다.여기서 next는 액션을 다음 미들웨어로 넘길 수 있는데, 다음 미들웨어가 없으면 레드ucer로 바로 넘어간다. action은 현재 처리해야 할 action이라고 생각하면 된다.
미들웨어는 여러 개 작성할 수 있다. 순차적으로 미들웨어가 실행된다.순서를 보면 next에 의해 미들웨어 1이 미들웨어 2에게 액션을 전달하게 된다.미들웨어 2는 다음 미들웨어가 없기 때문에 디스퍼치를 하게 된다.함수 안에서 디스패치를 하면 다시 미들웨어 1로 돌아가게 되어 실행하게 된다. 만약 next()를 하지 않을 경우에는 액션이 레듀서에 전달되지 않는다(무시).
하지만 실무에서는 이처럼 미들웨어를 직접 만들지 않고 라이브러리를 통해 만든다고 한다.나는 아직 취업준비라서 실무에서 어떻게 사용할지는 모르겠지만 직접 만들 수 있으면 된다고 해서 이렇게 작성한다.
내가 공부한 내용을 내 나름대로 이해하고 작성한 것이기 때문에 내용이 무조건 옳은 것은 아니다.피드백 주실 분 있으시면 댓글로 피드백 부탁드립니다.