window.aftersell.cart.actions.
Las acciones se ejecutan después de que el carrito está listo, dentro de
ready() o de un handler de eventos.Antes de que el carrito se cargue, las acciones son stubs. Cada una registra una advertencia en la consola nombrando la acción, por ejemplo
cart.actions.addItem() called before the cart loaded, y no hace nada. Las acciones asíncronas aún resuelven una Promise, así que una cadena .then() se ejecuta normalmente en lugar de lanzar una excepción; getCart() devuelve null y formatMoney() devuelve una cadena vacía.Nada se rompe si llamas a una demasiado pronto, pero tampoco sucede nada. Observa la consola en busca de esa advertencia cuando una acción parezca no hacer nada.Todas las acciones
Drawer
open y close
Lectura
getCart()
null antes de que se haya cargado. El resultado es una copia, así que mutarlo no cambiará el carrito real.
getCart() es redundante ahí.
formatMoney(cents)
configure({ money_format }).
Cambiar el carrito
Las acciones de artículos identifican una línea por su
key de Shopify, no por el ID de variante, porque un carrito puede contener la misma variante en varias líneas con propiedades diferentes. Léela desde getCart().items[n].key.addItem(variantId, quantity?)
quantity tiene como valor predeterminado 1. Se resuelve una vez que el carrito se ha asentado.
removeItem(key)
updateItemQuantity(key, quantity)
0 elimina la línea.
cart_updated porque la verificación > 1 es falsa en la segunda pasada. Consulta las dos reglas.
replaceLineVariant(key, variantId)
key y aterriza al final del carrito. Vuelve a leer getCart() después en lugar de reutilizar la key que pasaste.
Actualización
refresh()
visualRefresh()
Notas y casos límite
- Las acciones asíncronas se resuelven cuando el cambio se asienta. Hacer await de una te permite secuenciar trabajo después de que el carrito realmente se haya actualizado.
getCart()devuelve una copia. Mutarla no hace nada al carrito real.- No hay acción para códigos de descuento. Los códigos aplicados se pueden leer en el carrito (
discountCodes,totalDiscount) y por línea (discountAllocations); los compradores los aplican mediante el bloque Discount code. - No hay acción para atributos del carrito ni notas. Los atributos se pueden leer en el objeto cart; los compradores escriben notas mediante el bloque Notes.
- Para ocultar una línea en lugar de eliminarla, usa
registerLineTransform. Eliminar cambia el total del comprador; ocultar no.
Adónde ir después
- Objeto cart: lo que
getCart()devuelve. - Eventos: cuándo ejecutar estas acciones.
- Hooks: cambia cómo se renderiza una línea en lugar de cambiar el carrito.
- Casos de uso: soluciones completas a solicitudes comunes.