Spartacus UI 当前用户 的 cart id 存储在浏览器 local storage 里,如下图所示:
将这个 cache 清除后:
state 存储的不再是具体的 cart id,而是一个空值:
下图逻辑的语义是,如果这个 cart id 为空值 ""
, 就将其转换成硬编码 current
.
通过这个 HTTP 请求读取 cart 数据:
/occ/v2/electronics-spa/users/current/carts?fields=carts(DEFAULT,potentialProductPromotions,appliedProductPromotions,potentialOrderPromotions,appliedOrderPromotions,entries(totalPrice(formattedValue),product(images(FULL),stock(FULL)),basePrice(formattedValue,value),updateable),totalPrice(formattedValue),totalItems,totalPriceWithTax(formattedValue),totalDiscounts(value,formattedValue),subTotal(formattedValue),deliveryItemsQuantity,deliveryCost(formattedValue),totalTax(formattedValue,%20value),pickupItemsQuantity,net,appliedVouchers,productDiscounts(formattedValue),user,saveTime,name,description)&lang=en&curr=USD
返回的 payload:
CartNotEmpty Guard
仅当 cart 成功加载后,才能通过第 22 行的 filter 操作。
这个 guard 在 module 里配置: