전역 상태관리 라이브러리 : 중앙 state 관리소를 사용할 수 있게 도와주는 패키지(라이브러리)
(1) 리덕스가 필요한 이유 - useState의 불편함
→ 리덕스를 사용하면 중간 컴포넌트를 거치지 않아도 사용할 수 있다.
(2) Local state와 Global state
(1) 패키지 설치
redux
와 react-redux
두 개의 패키지를 설치한다.
react-redux는 리액트에서 리덕스를 사용할 수 있도록 서로 연결시켜주는 패키지이다.
yarn add redux react-redux
(2) 폴더 구조 생성
src 폴더 안에
redux
: 리덕스와 관련된 모든 코드를 모아 놓을 폴더config
: 리덕스 설정과 관련된 파일을 모아 높을 폴더configStore.js
: 중앙 state 관리소modules
: 우리가 만들 state들의 그룹(3) 설정 코드 작성
작성 코드는 이해하려고 하지 말고, 사용 방법을 중점으로 공부한다.
createStore()
리덕스의 가장 핵심이 되는 스토어를 만드는 함수
combineReducers()
리덕스는 action → dispatch → reducer 순으로 작동하는데, 이 때 애플리케이션이 복잡해지면 reducer 부분을 여러 개로 나눠야 한다. combineReducers는 여러 개의 독립적인 reducer의 반환 값을 하나의 상태 객체로 만들어 준다.
src/config/configStore.js
import { createStore } from "redux";
import { combineReducers } from "redux";
const rootReducer = combineReducers({});
const store = createStore(rootReducer);
export default store;
// 추가할 코드
import store from "./redux/config/configStore";
import { Provider } from "react-redux";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
//App을 Provider로 감싸주고, configStore에서 export default한 store를 넣어준다.
<Provider store={store}>
<App />
</Provider>
);
reportWebVitals();
새로운 개념들이 나오면서 코딩이 점점 더 어렵게 느껴진다. 리덕스가 엄청 편리한 패키지인 것은 알겠는데, 이전에 배웠던 내용들과 뒤섞여 혼란스럽다. 여러 번 적용해보고 익숙해지는 것이 필요할 것 같다.