상태 모델
폼 값, 단계, 오류처럼 함께 바뀌는 값을 하나의 객체로 묶는다.
useReducer는 useState의 고급판이 아니라, 여러 이벤트가 같은 상태 묶음을 바꿀 때 전이 규칙을 한 함수에 모아 추적성을 높이는 도구다.
폼 값, 단계, 오류처럼 함께 바뀌는 값을 하나의 객체로 묶는다.
setName 같은 setter보다 submitted, fieldChanged 같은 사건 이름을 둔다.
reducer는 입력이 같으면 같은 다음 상태를 반환하는 순수 함수로 유지한다.
컴포넌트는 dispatch만 호출하고 세부 변경 규칙은 reducer에 맡긴다.
function reducer(state, action) {
switch (action.type) {
case 'submitted':
return { ...state, pending: true, error: null };
default:
return state;
}
}