액션
무슨 일이 일어났는지 type으로 표현합니다.
상태 전이가 여러 액션으로 나뉘고 다음 상태 규칙이 복잡해질 때 reducer가 힘을 발휘합니다.
useReducer로 바꾸기 전에는 액션 종류, 상태 전이 규칙, 불변성 처리를 실제 컴포넌트 코드에서 확인합니다.
무슨 일이 일어났는지 type으로 표현합니다.
상태 변경 로직을 reducer 안에 모읍니다.
각 case는 새 상태 객체나 배열을 반환합니다.
초기값 계산이 필요하면 init 함수를 둡니다.