Hey Everyone, Im building a checkout ui extension where Im trying to use the useDeliveryGroup to call the selected delivery group to see if its the pickup. Ive tried to do it within the extension function setting it up under the reductions section. But the function is being rerendered too many times. If I try to put this in a useEffect function the useDeliveryGroup Sees an issue of having a hook inside ofuseEffect. What could I do here to get the useDeliveryGroup and if its pickup set a attribute and unset it if its not.Here is my sample code:
const [pickupState, setPickupState] = useState(false);
useEffect( ()=>{
const deliveryGroups = useDeliveryGroups();
console.log("deliveryGroups",deliveryGroups);
if (typeof deliveryGroups != 'undefined' && deliveryGroups.length > 0) {
const {
selectedDeliveryOption
} = useDeliveryGroup(deliveryGroups[0]);
console.log("selectedDeliveryOption",selectedDeliveryOption);
console.log("inside deliveryGroups if statement");
const setPickupAttribute = async () => {
console.log("inside setPickupAttribute");
const pickupAttribute = useAttributeValues(['pickup']);
const updateAttribute = useApplyAttributeChange();
if (typeof selectedDeliveryOption != 'undefined' && selectedDeliveryOption?.title === 'Pickup' && typeof pickupAttribute === 'undefined') {
await updateAttribute({
type: "updateAttribute",
key: "pickup",
value: "true",
});
setPickupState(true);
} else {
await updateAttribute({
type: "updateAttribute",
key: "pickup",
value: "",
});
setPickupState(false);
}
}
} else {
console.log("No delivery groups found");
}
}, []);
return (
<Banner title="pickup-attribute">
{pickupState && (
<p>
{selectedDeliveryOption ? selectedDeliveryOption?.title : "No selected Delivery Option"}
</p>
)}
{pickupState ? 'Pickup is selected' : 'Pickup is not selected'}
</Banner>
);
the render o the banner is just for testing in the future I will render an empty space. Cause I need this for a discount function Im building.
Any ideas ? ![]()