redux를 사용하면 코드가 복잡해지는 단점이 있다.
@reduxjs/toolkit를 쓰면 이를 해결 할 수 있다.
Basic
@reduxjs/toolkit을 쓰는 간단한 예제다.
github.com/socratone/simple-redux-toolkit
configure.js는 redux의 store에 해당한다.
configureStore 메소드를 써서 store를 생성하면
redux dev tools 설정을 자동으로 해주고
dispatch를 비동기적으로 처리할 수 있다.
bugs.js는 redux의 reducer에 해당한다.
createSlice 메소드를 써서 보다 간결하게 reducer를 구현할 수 있다.
각 action을 처리하는 함수에서 원래는 state를 deep copy 해야 하지만
내부적으로 immer가 적용됐기 때문에 예제처럼 state 인자를 받고 바로 처리할 수 있다.
npm start로 브라우저에서 로딩한 뒤 console 창을 보면
index.js의 dispatch 메소드를 어떤식으로 사용해야 하는지 확인할 수 있다.
Combine
@reduxjs/toolkit에서 state를 묶는 예제다.
github.com/socratone/simple-redux-toolkit-combine
reducer.js는 root가 되는 reducer이고
reducer.js 자식의 entities.js에서 combineReducers를 써서 bugs와 items의 state를 묶었다.
그 결과 state 객체는 아래와 같이 된다.
Middleware
dispatch가 실행될 때마다 state에 action이 발생하기 전에 호출되는 함수를 말한다.
github.com/socratone/simple-redux-toolkit-middleware
configureStore.js에서 middleware로 넣을 함수를 설정해야 하고
logger.js처럼 사용할 수 있다.
next(action)을 이용해서 다음 middleware 함수로 넘어가게 하거나
다음에 오는 함수가 없다면 action에 따른 state를 변경하게 된다.
const logger = store => next => action => {
console.log('store:', store);
console.log('next:', next);
console.log('action:', action);
next(action);
};
참고 : redux-toolkit.js.org
'Redux' 카테고리의 다른 글
Redux Toolkit State를 리셋하는 방법 (0) | 2021.11.01 |
---|---|
Redux 기본 사용 방법 (0) | 2020.04.25 |
immutable하게 데이터를 수정하기 위한 라이브러리 - immer 사용법 (0) | 2020.04.25 |