window.aftersell.cart.actions.
Akcje uruchamiaj po tym, jak koszyk jest gotowy — wewnątrz
ready() lub handlera zdarzenia.Zanim koszyk się załaduje, akcje są atrapami (stubs). Każda z nich loguje w konsoli ostrzeżenie z nazwą akcji, na przykład
cart.actions.addItem() called before the cart loaded, i nic nie robi. Akcje asynchroniczne nadal zwracają rozwiązany Promise, więc łańcuch .then() działa normalnie, zamiast rzucać wyjątek; getCart() zwraca null, a formatMoney() zwraca pusty string.Nic się nie psuje, jeśli wywołasz którąś za wcześnie, ale też nic się nie dzieje. Obserwuj konsolę pod kątem tego ostrzeżenia, gdy akcja wydaje się nic nie robić.Wszystkie akcje
Drawer
open i close
Odczyt
getCart()
null, zanim się załaduje. Wynik jest kopią, więc jego modyfikacja nie zmieni prawdziwego koszyka.
getCart() jest tam zbędne.
formatMoney(cents)
configure({ money_format }).
Zmienianie koszyka
Akcje na pozycjach identyfikują pozycję po jej Shopify
key, a nie po ID wariantu, ponieważ koszyk może zawierać ten sam wariant w kilku pozycjach z różnymi właściwościami. Odczytaj go z getCart().items[n].key.addItem(variantId, quantity?)
quantity domyślnie wynosi 1. Rozwiązuje się, gdy koszyk się ustabilizuje.
removeItem(key)
updateItemQuantity(key, quantity)
0 usuwa pozycję.
cart_updated, ponieważ warunek > 1 jest fałszywy przy drugim przebiegu. Zobacz dwie zasady.
replaceLineVariant(key, variantId)
key i ląduje na końcu koszyka. Odczytaj ponownie getCart() po zamianie, zamiast ponownie używać przekazanego klucza.
Odświeżanie
refresh()
visualRefresh()
Uwagi i przypadki brzegowe
- Akcje asynchroniczne rozwiązują się, gdy zmiana się ustabilizuje. Oczekiwanie na jedną z nich pozwala sekwencjonować pracę po faktycznej aktualizacji koszyka.
getCart()zwraca kopię. Jej modyfikacja nie robi nic z prawdziwym koszykiem.- Nie ma akcji dla kodów rabatowych. Zastosowane kody można odczytać na koszyku (
discountCodes,totalDiscount) i per pozycję (discountAllocations); klienci stosują je przez blok Discount code. - Nie ma akcji dla atrybutów koszyka ani notatek. Atrybuty można odczytać na obiekcie koszyka; klienci zapisują notatki przez blok Notes.
- Aby ukryć pozycję zamiast ją usuwać, użyj
registerLineTransform. Usunięcie zmienia sumę klienta; ukrycie nie.
Co dalej
- Obiekt koszyka: co zwraca
getCart(). - Zdarzenia: kiedy uruchamiać te akcje.
- Hooki: zmieniaj sposób renderowania pozycji zamiast zmieniać koszyk.
- Przypadki użycia: kompletne rozwiązania typowych potrzeb.