
- 작업 환경 설정
- UI 준비하기
- 리덕스 관련 코드 작성하기
- 리액트 래플리케이션에 리덕스 적용하기
- 컨테이너 컴포넌트 만들기
- Hooks를 사용하여 컨테이너 컴포넌트 만들기
프리젠테이셔널 컴포넌트컨테이너 컴포넌트 를 분리하는 것프리젠테이셔널 컴포넌트src/components컨테이너 컴포넌트src/containers


conbineReducers 유틸 함수 사용src/index.js 에 생성composeWithDevTools 를 createStore() 의 두 번째 파라미터에 넣는다.
connect 함수
👉 connect(mapStateToProps, mapDispatchToProps)(연동할 컴포넌트)
mapStateToProps
: 리덕스 스토어 안의 상태를 컴포넌트의 props로 넘겨주기 위해 설정하는 함수
mapDispatchToProps
: 액션 생성함수를 컴포넌트의 props로 넘겨주기 위해 사용하는 함수
❖ 반환된 함수에 컴포넌트를 파라미터로 넣어주면 리덕스와 연동된 컴포넌트가 만들어진다.
❖ 익명함수 형태로도 가능
bindActionCreators 유틸 함수
mapDispatchToProps 에 해당하는 파라미터를 액션 생성함수로 이루어진 객체 형태로 넣어준다. createAction 으로 액션을 만들면 액션에 필요한 추가 데이터는 payload라는 이름을 사용한다.payload라는 이름으로 사용하기 떄문에, action.id, action.todo 를 조회하는 대신, 모두 공통적으로 action.payload 값을 조회하도록 리듀서 구현
immer 을 사용하면 코드를 더 간단(?)하게 나타낼 수 있다.
connect 함수 사용 대신 Hooks 사용const 결과 = useSelector(상태 선택 함수)mapStateToProps 와 형태가 같다.
❗️ useCallback 하고 같이 사용
❗️ 이를 사용해야 하는 상황은 흔하지 않음...useSelector 로 리덕스 상태를 조회 했을 때는 최저화 작업이 자동으로 이루어지지 않으므로, 성능 최적화를 위해서는 React.memo() 를 컨테이너 컴포넌트에 사용해 줘야한다.