如何检测 SAP 电商云 Spartacus UI 当前正处于导航状态
使用 routing.selector.ts 里的 isNavigating:
設計原理:Spartacus route reducer 里針對 ROUTER_NAVIGATION 和 ROUTER_NAVIGATED 進行狀態遷移:
當接收到 ROUTER_NAVIGATION(跳轉正在進行) 事件時,將狀態的 nextState 字段設置成 action payload:
當接收到 ROUTER_NAVIGATED(跳轉已經完成) 事件時,將狀態的 nextState 字段設置成 undefined:
回到本文開頭的 API,如果 nextState 不為空,說明正在 navigating.
selector 就是純函數,能夠返回 state 的某一個切片的數據。
只有通過 createSelector 創建的 selector,才具有記憶功能(memoized),即對于相同的輸入,一定會返回相同的輸出。
為什么 pageMetaService 會觸發到 Router State 的 selector?
看看 this.meta$ 的數據源:
meta$ 來自 this.cms.getCurrentPage:
從全局 store 里調用 RoutingSelector 的 getPageContext 方法:
最后 selector 被調用:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的如何检测 SAP 电商云 Spartacus UI 当前正处于导航状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宠物荷兰猪其实是哪种动物?蚂蚁庄园5.7
- 下一篇: 小米Civi 3 12+512GB版入网