SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因

http://localhost:4200/electronics-spa/en/USD/checkout/delivery-mode

没有任何错误消息,白屏:

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第1张图片

能看到向 checkoutDeliveryMode step 发起跳转的事件:

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第2张图片

Delivery Mode 实现的 CMS Component id:CheckoutDeliveryMode

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第3张图片

CheckoutDeliveryMode 目前只激活了两个 Component guard:
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第4张图片

https://github.com/SAP/sparta...

checkout/payment-details:
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第5张图片

payment details 实现的 CMS Component ID:CheckoutPaymentDetails
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第6张图片

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第7张图片

  • CheckoutAuthGuard
  • CartNotEmptyGuard

直接访问 checkout,isStable 返回 false,所以无法继续下面的操作。

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第8张图片

判断 cart 是否 stable:
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第9张图片

如果一个 cart 已经加载完毕,且没有其他额外施加在其上的 operation,则我们说该 cart 已经 stable 了:
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第10张图片

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第11张图片

此时 state 里是空的:
SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第12张图片

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第13张图片

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第14张图片

这个原理很容易理解,直接在浏览器里粘贴 url,此时取 cart 明细的 API 都还没发出去,所以从 ngrx store 里根本取不到和 cart 相关的信息,所以 isStable 导致返回 false.

第26行代码:如果 predicate 返回 false,那么在第32行的IF 分支检查无法通过,不会继续接下来的 next 操作:

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第15张图片

filter Operator 的实现里,如果 predicate 函数返回 false,第 32 行的 IF 分支进不去,执行链就从这里断掉了。

SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因_第16张图片

更多Jerry的原创文章,尽在:"汪子熙":

你可能感兴趣的:(SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因)