window.aftersell.cart.actions.
Ações são executadas depois que o carrinho está pronto, dentro de
ready() ou de um handler de evento.Antes de o carrinho carregar, as ações são stubs. Cada uma registra um aviso no console nomeando a ação, por exemplo
cart.actions.addItem() called before the cart loaded, e não faz nada. As ações assíncronas ainda resolvem uma Promise, então uma cadeia .then() roda normalmente em vez de lançar um erro; getCart() retorna null e formatMoney() retorna uma string vazia.Nada quebra se você chamar uma cedo demais, mas nada acontece também. Fique de olho no console procurando esse aviso quando uma ação parecer não fazer nada.Todas as ações
Drawer
open e close
Leitura
getCart()
null antes de ele ter carregado. O resultado é uma cópia, então mutá-lo não altera o carrinho real.
getCart() é redundante ali.
formatMoney(cents)
configure({ money_format }).
Alterando o carrinho
As ações de item identificam uma linha pelo seu
key do Shopify, não pelo ID da variante, porque um carrinho pode conter a mesma variante em várias linhas com propriedades diferentes. Leia-o em getCart().items[n].key.addItem(variantId, quantity?)
quantity tem padrão 1. Resolve quando o carrinho estabiliza.
removeItem(key)
updateItemQuantity(key, quantity)
0 remove a linha.
cart_updated porque a verificação > 1 é falsa na segunda passagem. Veja as duas regras.
replaceLineVariant(key, variantId)
key e vai para o final do carrinho. Releia getCart() depois, em vez de reutilizar o key que você passou.
Atualização
refresh()
visualRefresh()
Observações e casos extremos
- Ações assíncronas resolvem quando a alteração estabiliza. Aguardar uma delas permite sequenciar trabalho depois que o carrinho realmente foi atualizado.
getCart()retorna uma cópia. Mutá-la não faz nada no carrinho real.- Não há ação para códigos de desconto. Códigos aplicados são legíveis no carrinho (
discountCodes,totalDiscount) e por linha (discountAllocations); os compradores os aplicam pelo bloco Discount code. - Não há ação para atributos ou notas do carrinho. Atributos são legíveis no objeto de carrinho; os compradores escrevem notas pelo bloco Notes.
- Para ocultar uma linha em vez de removê-la, use
registerLineTransform. Remover altera o total do comprador; ocultar não.
Para onde ir agora
- Objeto de carrinho: o que
getCart()devolve. - Eventos: quando executar essas ações.
- Hooks: mude como uma linha é renderizada em vez de mudar o carrinho.
- Casos de uso: soluções completas para pedidos comuns.