window.aftersell.cart.actions 아래에 있어요.
액션은 장바구니가 준비된 후,
ready() 안이나 이벤트 핸들러 안에서 실행하세요.장바구니가 로드되기 전에는 액션이 스텁(stub)이에요. 각 액션은 해당 액션 이름이 포함된 콘솔 경고(예:
cart.actions.addItem() called before the cart loaded)를 기록하고 아무 동작도 하지 않아요. 비동기 액션은 여전히 Promise를 resolve하므로 .then() 체인은 예외를 던지지 않고 정상적으로 실행돼요. getCart()는 null을, formatMoney()는 빈 문자열을 반환해요.너무 일찍 호출해도 아무것도 깨지지 않지만, 아무 일도 일어나지 않아요. 액션이 아무 동작도 하지 않는 것처럼 보이면 콘솔에서 해당 경고를 확인하세요.모든 액션
드로어
open과 close
읽기
getCart()
null을 반환해요. 결과는 복사본이므로, 변경해도 실제 장바구니는 바뀌지 않아요.
getCart()는 불필요해요.
formatMoney(cents)
configure({ money_format })으로 형식을 재정의하세요.
장바구니 변경하기
아이템 액션은 변형 ID가 아니라 Shopify **
key**로 라인을 식별해요. 장바구니에는 같은 변형이 서로 다른 속성을 가진 여러 라인으로 담길 수 있기 때문이에요. getCart().items[n].key에서 읽으세요.addItem(variantId, quantity?)
quantity의 기본값은 1이에요. 장바구니가 안정되면 resolve돼요.
removeItem(key)
updateItemQuantity(key, quantity)
0을 전달하면 라인이 제거돼요.
> 1 검사가 false가 되므로 cart_updated에서 실행해도 안전해요. 두 가지 규칙을 참고하세요.
replaceLineVariant(key, variantId)
key를 받고 장바구니 끝에 배치돼요. 전달했던 key를 재사용하지 말고 이후에 getCart()를 다시 읽으세요.
새로 고침
refresh()
visualRefresh()
참고 사항 및 엣지 케이스
- 비동기 액션은 변경이 안정되면 resolve돼요. await하면 장바구니가 실제로 업데이트된 후 작업을 순차적으로 진행할 수 있어요.
getCart()는 복사본을 반환해요. 변경해도 실제 장바구니에는 아무 영향이 없어요.- 할인 코드용 액션은 없어요. 적용된 코드는 장바구니(
discountCodes,totalDiscount)와 라인별(discountAllocations)로 읽을 수 있으며, 쇼핑객은 할인 코드 블록을 통해 적용해요. - 장바구니 속성이나 메모용 액션은 없어요. 속성은 cart 객체에서 읽을 수 있고, 쇼핑객은 메모 블록을 통해 메모를 작성해요.
- 라인을 제거하는 대신 숨기려면
registerLineTransform을 사용하세요. 제거는 쇼핑객의 합계를 변경하지만 숨기기는 그렇지 않아요.