Redux Toolkit
지금까지 redux를 이용해서 개발할때 복잡하고 코드가 많았다.
어플리케이션이 복잡해질수록 다양한 액션과 리듀서에 대한 관리가 복잡해지며 편의를 위한 패키지 추가가 많이 필요했다.
immer, ducks pattern 등을 공식적으로 지원한다. redux-thunk가 비동기 처리를 위해 기본으로 포함됐다.
- ducks pattern: redux를 사용할 때 action과 reducer를 하나의 파일에서 사용하는 패턴. redux-toolkit은 이를 slice.js 란 파일에 모아둔다.
사용해보시면 편한게 딱 느껴짐..!
redux의 악명 높았던 사용법이 정말 많이 개선된 걸 느낄 수 있다. 또한 입맛에 따라 redux-saga, redux-observable와 같은 비동기 처리 패키지를 추가할 수 있다.
설치
# NPM
npm install @reduxjs/toolkit
slice.js 파일을 생성 (action creator와 reducer를 동시에 만들어주는 작업 진행)
*"@reduxjs/toolkit"이 설치되어있다면 "redux-thunk"는 따로 설치안해줘도 됨(이미 갖고있음)
configureStore
Redux의 createStore 함수에서 개발을 더 쉽게 하게 도와주는 기본 설정들이 들어있는 스토어 생성 함수이다. configureStore를 사용하면 기본으로 Redux thunk가 추가된다.
정정
강의 24분 10초에서 createStore에서 미들웨어 적용하는 것을 삭제하는데, Redux Toolkit은 스토어를 만들 때 편리하게 만들 수 있도록, 기본 옵션들이 포함된 store를 만들 수 있게 해주는 configureStore함수를 지원합니다. 그리고 이 함수로 store를 만들 때 기본으로 thunk 미들웨어를 지원합니다. 따라서 createStore 대신 configureStore함수를 이용해서 store를 생성해야 올바르게 동작합니다.
import { configureStore } from '@reduxjs/toolkit'
import reducer from './slice';
const store = configureStore({ reducer });
export default store;
PureComponent
컴포넌트는 상태를 직접 관리할 수 있다. (useState)
상태를 관리하지 않고 props만 넘겨주는 컴포넌트
추가 정정
영상의 코드에서 if문 위치는 useCallback 아래에 있어야 합니다.
const handleChange = useCallback(({ name, value }) => {
dispatch(changeReviewField({ name, value }));
}, [dispatch]);
const handleSubmit = useCallback(() => {
dispatch(sendReview({ restaurantId }));
}, [dispatch, restaurantId]);
if (!restaurant) {
return (
<p>Loading...</p>
);
}
'CodeSoom- React 13기' 카테고리의 다른 글
[코드숨] 리액트 13기 -8강/1.Emotion(CSS-in-JS라이브러리) (0) | 2022.12.03 |
---|---|
[코드숨] 리액트 13기 -7강/로그인(HTTPie,Authorization 헤더,LocalStorage,given, 리뷰) (0) | 2022.11.27 |
[코드숨] 리액트 13기 -6강/과제1 제출코드 참고(레스토랑 상세 페이지 구현하기) (0) | 2022.11.21 |
[코드숨] 리액트 13기 -6강/라우팅(Routing) (0) | 2022.11.18 |
[코드숨] 리액트 13기 -5강/과제1(레스토랑 조회 구현하기) 풀이 참고 (0) | 2022.11.13 |