SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因

i042416發表於2021-06-16

沒有任何錯誤訊息,白屏:


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


能看到向 checkoutDeliveryMode step 發起跳轉的事件:


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


Delivery Mode 實現的 CMS Component id:CheckoutDeliveryMode


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


CheckoutDeliveryMode 目前只啟用了兩個 Component guard:

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


github.com/SAP/spartacu

checkout/payment-details:

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


payment details 實現的 CMS Component ID:CheckoutPaymentDetails

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因



SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


  • CheckoutAuthGuard
  • CartNotEmptyGuard

直接訪問 checkout,isStable 返回 false,所以無法繼續下面的操作。


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


判斷 cart 是否 stable:

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


如果一個 cart 已經載入完畢,且沒有其他額外施加在其上的 operation,則我們說該 cart 已經 stable 了:

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因



SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


此時 state 裡是空的:

SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因



SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因



SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


這個原理很容易理解,直接在瀏覽器裡貼上 url,此時取 cart 明細的 API 都還沒發出去,所以從 ngrx store 里根本取不到和 cart 相關的資訊,所以 isStable 導致返回 false.

第26行程式碼:如果 predicate 返回 false,那麼在第32行的IF 分支檢查無法通過,不會繼續接下來的 next 操作:


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因


filter Operator 的實現裡,如果 predicate 函式返回 false,第 32 行的 IF 分支進不去,執行鏈就從這裡斷掉了。


SAP 電商雲UI結帳流程使用 url 貼上直接跳轉到 delivery mode不能開啟頁面的原因



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2776908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章