1. Redux
Redux는 상태 업데이트와 관련된 로직을 효율적으로 관리하는 라이브러리
2. Redux의 세 가지 원칙
- Single source of truth 단일스토어
동일한 데이터는 항상 같은 곳에서 가지고 와야 한다는 의미. 즉, Redux에는 데이터를 저장하는 Store라는 단 하나뿐인 공간이 있음과 연결이 되는 원칙.
- State is read-only 읽기 전용 상태
상태는 읽기 전용이라는 뜻, React에서 상태갱신함수로만 상태를 변경할 수 있었던 것처럼, Redux의 상태도 직접 변경할 수 없음을 의미. 즉, Action 객체가 있어야만 상태를 변경할 수 있음과 연결되는 원칙.
- Changes are made with pure functions 순수한 함수 리듀서
변경은 순수함수로만 가능하다는 뜻, 상태가 엉뚱한 값으로 변경되는 일이 없도록 순수함수로 작성되어야하는 Reducer와 연결되는 원칙.
3. React의 상태관리 순서
Action->Dispatch->Reducer->Store
1) 상태가 변경되어야 하는 이벤트가 발생하면, 변경될 상태에 대한 정보가 담긴 Action객체가 생성됨.
2) 이 Action객체는 Dispatch함수의 인자로 전달됨
3) Dispatch함수는 Action객체를 Reducer함수로 전달
4) Reducer함수는 Action객체의 값을 확인하고, 그 값에 따라 전역상태 저장소 Store의 상태를 변경
5) 상태가 변경되면 React는 화면을 다시 렌더링
type
은 필수로 지정해주어야 하고, Snake Case
로 작성type
값에 따라 상태를 변경시키는 함수순수함수
여야만 함combineReducers
메서드를 사용해서 하나의 Reducer로 합쳐줄수 있다.)createStore
메서드를 활용해 Reducer를 연결해 Store를 생성import{ createStore } from 'redux';
const store = createStore(rootReducer);
4.Redux Hooks
useSelector()
, useDispatch()
useSelector()
컴포넌트와 state를 연결하여 Redux의 state에 접근할 수 있게해주는 메서드
useDispatch()
Action객체를 Reducer로 전달해주는 메서드