dispatch 하기 전에(reducer 전달 되기 전에) middleware에 거쳐서 가공을 해주고 다시 보내준다.
next() 를 통해 다음 미들웨어로 가고, 최종적으로 reducer로 향한다
const store = createStore(rootReducer, applyMiddleWare(thunk))) // store === ({dispatch, getState}) const middleware = store => next => action => { // 리덕스 미들웨어의 기본 형태 }