리덕스 미들웨어

특정 조건에 따라 액션 무시 및 추가 작업, 수정, 로깅, 트리거 액션, 함수 호출 등을 수행하도록 할 수 있다.

비동기 관련 미들웨어 라이브러리로 많이 사용되는 것은 redux-thunk, redux-saga가 있다.

액션 ----------> 미들웨어 ------------> 리듀서 -----------> 스토어

/* 이러한 형태로 미들웨어를 작성하게 된다. */
const middleware = store => next => action => {
    // 미들웨어 수행 내용
}

/* 이런 의미를 가진다. */
function middleware(store) {
    return function(next) {
        return function(action) {
            // 미들웨어 수행 내용
        }
    }
}
const consoleLoggingMiddleware = (store) => (next) => (action) => {
    console.log(action); // 액션을 출력하는 로그 기능을 만듦
    const result = next(action); // 다음 미들웨어 혹은 리듀서에게 액션을 전달한다.

    return result; // next의 반환값(state결과값)을 반환
};

/* ---------------------------------------------------------- */
  const { createStore, applyMiddleware } = Redux;

  const store = createStore(reducer, applyMiddleware(consoleLoggingMiddleware));

특정 작업을 하는 미들웨어를 만든 후 Store 에 리듀서 함수 등록 시점에 같이 등록처리 한다.


Redux-Logger

로깅 미들웨어로 가장 많이 사용되는 미들웨어이다.

<script src="<https://unpkg.com/[email protected]/dist/redux-logger.js>"></script>

const logger = reduxLogger.createLogger();

/* ---------------------------------------------- */
const store = createStore(reducer, applyMiddleware(consoleLoggingMiddleware, logger));
// 미들웨어는 여러개 설정할 수 있음