useState의 대체 함수이다
*reduce: 이전 상태를 새로운 상태로 변경할 때 사용되는 함수
(state, action) => newState
의 형태로 reduecer를 받고
dispatch
메서드와 짝의 형태로 현재 state를 반환한다
const [state, dispatch] = useReducer (reducer, initialArg, init);
장점
- 함수 컴포넌트 외부로 로직을 분리하여 재사용이 가능하고 구조가 유연하다
- action에 따라 상태를 업데이트하므로 코드에 의도를 담을 수 있어 가독성이 좋다