사건 이름 붙이기
setName보다 formChanged, submitted, failed처럼 도메인 사건으로 action을 정의한다.
로그와 디버깅이 쉬워진다useReducer는 상태가 많을 때 쓰는 도구라는 설명만으로는 부족하다. 핵심은 action이 어떤 사건을 의미하고, reducer가 이전 상태에서 다음 상태를 순수하게 계산하며, dispatch가 안정적인 전이入口가 된다는 점이다.
setName보다 formChanged, submitted, failed처럼 도메인 사건으로 action을 정의한다.
로그와 디버깅이 쉬워진다값, 로딩, 오류, 성공 여부처럼 함께 바뀌는 상태를 한 객체로 묶는다.
서로 의존하는 state가 흩어지지 않는다reducer는 API 호출, random, Date, localStorage 없이 다음 상태만 반환한다.
부수효과는 이벤트 핸들러나 effect로 분리한다기존 state를 직접 바꾸지 않고 새 객체나 배열을 반환한다.
mutation은 렌더 감지를 깨뜨릴 수 있다reducer는 순수 함수이므로 action별 입력과 출력을 작은 테스트로 검증할 수 있다.
UI 없이 상태 규칙을 확인한다