Udemy React 강의 173번 정리
이런 경우에 등장하는 게 useReducer
여러 값을 하나의 값으로 줄이는 함수임.
대표적인 예가 JavaScript의 reduce.
const total = items.reduce((sum, item) => {
return sum + item.price * item.quantity;
}, 0);
이전값 + 규칙 → 새값
이 패턴을 상태 관리에 적용한 게 useReducer임.
상태 변경 로직을 한 곳(reducer)에 모으자!
const [state, dispatch] = useReducer(reducer, initialState);
useState의 setState와 다름!
직접 값을 넣는 게 아니라 action을 전달
reducer는 반드시 이 형태를 가짐 :
function shoppingCartReducer(state, action) {
return newState;
}
| 매개변수 | 설명 |
| state | 항상 최신 상태 스냅샷 |
| action | dispatch로 전달한 정보 |
React가 최신 state를 보장하기 때문에 이전 상태 기반 업데이트를 자동으로 처리함. 그래서 setState(prev => ...) 이런 패턴이 필요 없는 거임.
function shoppingCartReducer(state, action) {
return state;
}
즉, 상태 변경 규칙만 정의하는 함수이기 때문임.
지금 단계에서 이 강의가 말하고자 하는 핵심은 useReducer는 복잡한 상태 변경 로직을 구조적으로 관리하기 위한 도구라는 것.