cart lab

장바구니 책임 분리

상품 목록 로딩, 장바구니 수량 변경, 합계 계산을 한 컴포넌트에 섞지 않고 각 역할에 맞는 구조로 나눕니다.

cartReducer

추가, 수량 변경, 제거, 초기화 같은 상태 전이를 action 단위로 모읍니다.

CartContext

장바구니 state와 dispatch를 필요한 컴포넌트가 같은 기준으로 읽게 합니다.

useFetch

로딩, 성공, 오류 상태를 훅 안에서 관리해 상품 목록 컴포넌트를 단순하게 둡니다.

load

상품 로딩 상태와 장바구니 상태를 섞지 않는다.

add

동일 상품 추가가 수량 증가로 이어지는지 본다.

qty

수량이 0 이하가 되는 전이를 막는다.

total

합계가 state 중복이 아니라 계산값인지 확인한다.