Sådan virker det
- En Custom code-blok under checkout-knappen renderer afkrydsningsboksen.
- Mens boksen er tom, tilføjer blokken en klasse til kurvens checkout- og express-payment-knapper via shadow root’en.
- Custom CSS får den klasse til at deaktivere klik.
Trin 1: Tilføj afkrydsningsboks-blokken
props.cart-afhængigheden betyder noget: den genanvender klassen, efter kurven re-renderes, hvilket ellers ville slette den.
Trin 2: Tilføj CSS’en
pointer-events: none er det, der faktisk blokerer klikket; opaciteten viser bare kunden hvorfor.
Trin 3: Test det
- Checkout-knappen er nedtonet og ikke reagerer på klik ved indlæsning.
- At sætte kryds i boksen aktiverer den; at fjerne krydset deaktiverer knappen igen.
- Express payment-knapper er også gated.
- At tilføje eller fjerne en vare genaktiverer ikke knappen, mens boksen er tom.
props.cart er i dependency-arrayet.
Spor hvem der accepterede
properties[...] direkte fra formularen, så værdien når ordren, uanset hvem der udfører tilføjelsen: Aftersell, temaet eller en anden app.
En property med _-præfiks holdes ude af den kundevendte linje, men når stadig Shopify, så den vises på ordren. Dette registrerer, hvilken vilkårsversion der var aktiv, ikke at kunden satte kryds i boksen.
Ting du skal have styr på
- Målret kun
cart-external-*-klasser.cart-internal-*-tvillingerne er kurvens eget maskinrum, ikke et håndtag til din kode. Se Custom CSS. - Tjek at
shadowRootfindes, før du bruger den. Den erundefined, indtil kurven booter. - Blokken renderer intet, før kurven er indlæst, så checkout-knappen er aldrig kortvarigt aktiv, før gaten anvendes.
- En React-blok, der kaster, renderer intet, og resten af kurven fortsætter, hvilket her betyder en ubeskyttet checkout-knap. Test i preview, før du udgiver.
Hvor du kan gå hen herfra
- Custom code-blokke: React-tilstand og dens props.
- Custom CSS: den offentlige klassekonvention.
- Events: hvad
checkout-eventet kan og ikke kan.